如果在jquery中使用.on处理事件,我如何检查?
例如,我在按钮点击事件中添加了一个事件处理程序:
$(document).on("click", "#button", function(event) {
alert("Handled buttonclick event!");
});
现在我想检查是否处理了事件以防止第二次分配相同的事件处理程序。
答案 0 :(得分:0)
如果您想add a button click once only
,可以使用one(),
$("#button").one("click",function(event) {
alert("Handled buttonclick event!");
});
or manually
您可以setting
与variable
类似
var countClicked=0;
$(document).on("click", "#button", function(event) {
alert("You clicked button "+ (++countClicked) + " times");
});
答案 1 :(得分:0)
由于您要委托文档 - 您需要检查文档的事件处理程序
$._data(document,'events') // will return all event handlers bound to the document
然后你可以检查你想要的事件......例如点击
var events = $._data(document,'events').click; // all click events
$.each(events,function(i,v){ // loop through
v.selector; // will give you all the selectors used in each delegated event
});
每个对象将包含以下内容
Object {type: "click", origType: "click", data: undefined, handler: function, guid: 2…} data: undefined guid: 2 handler: function (event) { namespace: "" needsContext: false origType: "click" selector: "#button" type: "click" __proto__: Object
这假设您的委托事件已绑定到文档对象。所以在这种情况下,你“必须”知道事件处理程序实际绑定到哪个元素。其他答案可能会更好地工作
所以这个方法不会知道
$('body').on("click", "#button", function(event) {
alert("Handled buttonclick event!");
});
或
$('parentelement').on("click", "#button", function(event) {
alert("Handled buttonclick event!");
});