bind
() 和 unbind
() 在 jQuery 3.0.0 中已弃用。
jQuery Upgrade guide说 API 文档解释了如何使用 on()
和 off()
重写它们,但我找不到它在哪里解释。
我们在应用程序中有很多已弃用的方法的用法,但大多数都已升级得很好,但有两种情况不清楚:
- Bind 有 bool 参数
preventBubble
参数,在某些情况下我们传递 false。如何使用on()
实现相同的效果 (preventBubble=false
)? - 我们很少使用取消绑定(bind),即调用
unbind(eventName, functionHandler)
。off()
需要选择器作为第二个参数才能传递functionHandler
。如何使用off()
重写它?
最佳答案
有两种方法可以阻止事件冒泡。
从事件处理程序返回 false 将自动调用 event.stopPropagation() 和 event.preventDefault()。
或者,可能更有用的是在事件处理程序中调用 event.stopImmediatePropagation()
。
对于.off()
,您只能传递两个参数,第二个参数是处理函数。 JQ 将适本地分配并将 undefined
分配给选择器参数。这可能有效也可能无效,具体取决于您指定on
的方式。
您可能还想研究命名空间事件,因为它可以简化指定要删除的事件的过程。例如(来自文档)
// Delegate events under the ".validator" namespace
$( "form" ).on( "click.validator", "button", validate );
// Remove event handlers in the ".validator" namespace
$( "form" ).off( ".validator" );
关于jquery - 将 jQuery 升级到 3.0 : rewrite bind() to on() & unbind() to off(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38276594/