我无法取消绑定事件。
我试图绑定click
事件,然后绑定mouseleave
事件并回调取消绑定click
,但不能正常工作。
el
是dom创建并通过脚本附加,这就是我使用document.on... el
所以我在下面尝试了包含注释代码的测试不能正常工作....我想念一些吗?
的jquery-1.11.1.min.js
https://jsfiddle.net/70t6jtns/
var el = $('div')
$(document).on('click', el, function() {
console.log('oncli')
});
//$(document).on('mouseleave', el, function() {
//$(document).off('click', el, function() {
//console.log('offcli')
//});
//$(document).off('click', el);
el.off('click');
//});
答案 0 :(得分:5)
首先,on
不接受jQuery对象作为第二个参数,因此$(document).on('click', el, function() {...
没有意义。
主要问题是你在一个案例中使用了事件委托,但在另一个案例中期望直接附加处理程序。您将click
处理程序附加到document
,然后尝试从特定元素(el
)分离。你必须将它从你附加它的同一个东西中删除。
如果要将处理程序附加到el
并稍后将其分离,请始终使用el
作为目标:
el.on("click", function() { ...
然后
el.off("click");
如果必须委托处理程序,那么您将再次确定要删除正在添加的内容。例如,
$(document).on("click", "selector-for-the-element", function() { ...
然后
$(document).off("click", "selector-for-the-element");
答案 1 :(得分:0)
我面临着同样的问题。因为我在文档上添加了on侦听器并尝试使用element。这就是我的问题。