【发布时间】:2011-07-29 23:32:47
【问题描述】:
此委托事件触发两次(并非总是如此,有时)。
client.bindButtonClickFunction = function(){
$("#client-plugin").delegate(".client-button", "click", function()
{
var id = this.id.split('-')[2];
client.retrieveMessageByID(id);
});
};
我在插入所有“.client-button”后调用该函数。
关于如何阻止它的任何想法?我尝试了 event.stopPropagation(),并且取消授权和重新授权也无济于事。
这是在 Chrome 中,作为 Chrome 插件的一部分。
【问题讨论】:
-
很难说没有进一步的信息。很可能您两次致电
bindButtonClickFunction...顺便说一句。您无需等待插入.client-buttons,delegate的工作方式与live类似。 -
您尝试过 stopImmediatePropagation 吗? api.jquery.com/event.stopImmediatePropagation
-
我刚刚解决了我遇到的两次触发问题。就像@FelixKling 说的那样,我在一些 $(document).ready() 函数内有我的 delegate() 声明,本质上是多次调用该函数。
-
@Eric Di Bari:为什么 $(document).ready() 中的 delegate() 会被调用两次?你能解释一下吗?