监听div contenteditable属性为true时内容变化的方法

在制作移动端编辑器器时,使用了div的contenteditable属性,把div做成一个可输入富文本的编辑器。

因为input有一个placeholder的属性,但是实测div并没有这个属性,于是打算使用jq模拟编辑器的placeholder属性。但是制作的时候发现,div并没有change事件,查阅W3C的文档时发现只有input、textarea、select存在change事件。

后在sf看到一篇帖子 可以给contenteditable添加change事件吗

可以使用input事件检测节点内容的变化,遂尝试之,解决。

demo如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
$('.editor-box .editor').on('click', function() {
if ($.trim($(this).html()) === '请为你的帖子装点下内容吧~') {
$(this).html('')
}
}).on('blur', function() {
if ($.trim($(this).html()) === '') {
$(this).html('请为你的帖子装点下内容吧~')
}
}).on('input', function() {
if ($.trim($(this).html()) === '') {
$(this).html('请为你的帖子装点下内容吧~')
}
})

评论区