jQuery focusout事件重复自己的问题

时间:2012-02-28 12:23:42

标签: jquery javascript-events focus

这件事情有效,但每次我点击我想要的元素时,它会“计算”点击次数,然后打印相同总点击次数的日志评论。

例如,如果我连续3次单击该元素(然后单击外部以触发焦点),则会打印3条日志注释,如果我再单击2次(再次在外面)则会打印5 {{ 1}}评论。

我希望每次点击元素外只有1 log个评论。

帮助任何人?

log

2 个答案:

答案 0 :(得分:2)

尝试取消绑定事件。

$("#main-wrapper").click(function (e) {
var contenteditable = $(e.target).attr('contenteditable');
if (contenteditable == 'true') {
    $(e.target).unbind('focusout').focusout(function() {
        var content = $(this).html();
        console.log("get: " + content);
    });
};          
});

答案 1 :(得分:1)

每次处理focusout时,都会附加一个新的click事件处理程序。这些事件处理程序不是替换,而是添加,并且在触发事件时执行每个事件处理程序。这就是为什么你获得与之前点击相同数量的记录消息。

您应该只能指定一次focusout处理程序,但是您希望如何触发它当然取决于您想要完成的任务。

$("#main-wrapper").focusout(function (e) {
  var contenteditable = $(e.target).attr('contenteditable');
  if (contenteditable == 'true') {
    var content = $(this).html();
    console.log("get: " + content);
  }          
});