其他分享
首页 > 其他分享> > jQuery类选择器事件绑定是否将eventHandler附加到每个实例?

jQuery类选择器事件绑定是否将eventHandler附加到每个实例?

作者:互联网

我正在学习jQuery,当我读到有关$(‘.className’).bind(‘click’,function(){})方法的知识时,就产生了一个疑问.

此方法是否将我的事件处理程序附加到DOM中每个className实例?如果是这样,那将是一个好方法-像将事件处理程序附加到页面上的许多实例一样,是一项开销吗?

还是利用事件委托-例如,处理程序将绑定到某个公共父对象,该父对象将使用e.target equalTo className并执行click事件,因此处理程序仅绑定到一个DOM元素?

请帮助我理解.谢谢.

另一个疑问.如果我确实将事件附加到每个dom元素上,那么过载在哪里生效?它会在执行时给浏览器带来额外的负担,还是会使dom变得繁重(我的意思是繁琐的dom解析)?

解决方法:

它确实会将回调绑定到这些元素的每一个.如果您有很多与选择器匹配的元素,则最好使用事件委托.

但是,您不必手动摆弄e.target. jQuery具有专门用于此场景的重载.on()方法:

$('#parent').on('click', '.children', function (){});

您应该始终将事件处理程序附加到最接近的父级,以便事件侦听器影响最少的元素.

标签:event-delegation,javascript,jquery
来源: https://codeday.me/bug/20191030/1968114.html