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