jQuery类选择器事件绑定是否将eventHandler附加到每个实例
Does jQuery class selector event binding attach eventHandler to each instance?
我在学习jQuery,当我读到关于$('.className').bind('click',function(){})
方法的文章时,产生了一个疑问。
这个方法是否将我的事件处理程序附加到DOM中className
的每个实例?如果是这样的话,这会是一个好方法吗?比如将事件处理程序附加到页面上的许多实例是一种开销,对吧?
或者它是在使用事件委托——比如说,处理程序将绑定到某个通用的父级,该父级将使用e.target equalTo className
并执行单击事件,从而使处理程序只绑定到一个DOM元素?
请帮我理解。谢谢
还有一个疑问。如果我将一个事件附加到每个dom元素,那么重载在哪里生效?它会在执行时给浏览器带来额外的负载吗?还是会使dom变重(我指的是解析dom的困难)?
它确实将回调绑定到这些元素中的每一个。如果有很多元素与选择器匹配,那么使用事件委派肯定会更好。
但是,您不必手动摆弄e.target
。jQuery有专门针对这个场景的重载.on()
方法:
$('#parent').on('click', '.children', function (){});
您应该始终将事件处理程序附加到尽可能接近的父级,以便受事件侦听器影响的元素数量最少。
$('.className').bind('click',function(){})
确实将事件处理程序附加到dom中的每个可用元素。。。事件委派也有一些问题,比如它不需要只侦听目标元素中的事件,而是需要再次评估委派的父级中发生的所有单击事件委派目标选择器。。。
也就是说,如果有很多因素,我更喜欢活动代表团。。。。但是更喜欢将处理程序附加到最直接的公共祖先元素,而不是将其绑定到body
或document
相关文章:
- ES6构造函数返回基类的实例
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 实例创建(JS)
- 显示模块模式在Knockout中设置模型的新实例
- 如何获取单选按钮的多个实例的选定单选按钮值
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- spine.js在启动时填充模型实例
- 不再需要时使用jQuery/kill实例
- 如何在用户输入时实例化数组
- 从Sequelize中的非实例更新
- 如何基于数组值创建新实例
- jQuery类选择器事件绑定是否将eventHandler附加到每个实例