我正在为复选框分配一个onclick处理程序。有时,执行事件绑定的javascript会运行多次(在部分回发上),并且处理程序会被分配两次。如何防止多次分配处理程序?
好的,谢谢你的回复。我写了一些东西来弄清楚元素是否有一个hanlder:
$.fn.hasHandler = function(eventName, handler)
{
var _hasHandler = false;
if(handler != undefined && this.data("events") !== null && this.data("events") !== undefined)
{
$.each(this.data("events"), function(name, handlers)
{
if(name === eventName)
{
$.each(handlers, function(index, value)
{
if(value.handler === handler)
{
_hasHandler = true;
}
});
}
});
}
return _hasHandler;
}
答案 0 :(得分:4)
你可以先取消绑定。
$('#foo')。unbind('click')。bind('click',function(){... do stuff here}};
答案 1 :(得分:1)
答案 2 :(得分:1)
假设你有:
<input type="checkbox" id="myCheck" />
您的javascript可能是:
var clickFound = false;
$.each($("#myCheck").data('events'), function(i, e) {
if(i === 'click') {
clickFound = true;
}
});
if(!clickFound) {
$("#myCheck").click(function() {
// ...
});
}
详细了解如何通过jQuery at this question测试绑定的事件。