refactor

* change the api to element-specific ways
* now we can deal with `[contenteditable]`
Merge pull request #5 from layerssss/contenteditable

refactor