我正在尝试取消绑定特定容器内所有元素的所有事件处理程序。像DIV一样。但是那些事件已被绑定/注册而不是使用jQuery。有些是使用onclick="...."
或使用常规本机JavaScript的手动方式绑定的。
但是当我做这样的事情时
$('#TheDivContainer').find('div,td,tr,tbody,table').unbind();
它似乎不起作用。这让我相信.unbind()仅在事件最初由jQuery绑定时才有效。
这是真的吗?是否有另一种解除一组元素中所有事件的方法?
谢谢!
答案 0 :(得分:7)
你是对的。与API中一样:
已附加的任何处理程序 使用.bind()可以删除 .unbind()。
答案 1 :(得分:3)
您可以随时执行此操作:
$('#TheDivContainer').find('div,td,tr,tbody,table')
.unbind('click')
.attr('onclick', ''); // edited to change null to ''
等。适用于所有适当的事件类型。
答案 2 :(得分:3)
Unbind只适用于jQuery创建的事件,因为执行此操作的所有方法(addEventListener和attachEvent)都需要将节点,事件名,和作为参数。 bind
负责为您存储这些内容..
顺便说一下,DOM0样式事件监听(.foo = function(...)
只能通过将相同属性设置为null
之类的其他内容来删除。