当我点击某个类的div元素时,我将contenteditable
更改为true。点击了div的onblur
我希望它提醒某些事情。我第一次模糊div,它工作正常,但之后它显示相同的警报两次。所以第一次,它会提醒一次。第二次,它会发出两次警报等等。
我做错了什么?
content = $('#content');
content.delegate('div', 'click', function(event){
$(this).attr('contenteditable', 'true');
$(this).focus();
$(this).bind('blur', function(){
alert('blur');
});
});
答案 0 :(得分:3)
每次点击都会再次绑定模糊。每个绑定都是新的,它们是堆叠的。使用.delegate()
(或.on()
)也可以使用模糊功能。
小提琴:http://jsfiddle.net/W8que/11/
代码:
content = $('#content');
content.on('click', 'div', function(){
$this = $(this);
$this.attr('contenteditable', 'true');
$this.focus();
});
content.on('blur', 'div', function(){
alert('blur');
});
由于小提琴已经在使用jQuery 1.7.x,我继续将.delegate()
换成更新的.on()
。除了缓存$(this)
等其他一些内容之外,还没有将事件传递给函数,因为我们无需preventDefault()
或stopPropagation()
。