vs2010网站开发,营销策略制定,北京seo技术,wordpress 百度Javascript事件通过冒泡传递#xff0c;事件最初发生在某个元素#xff0c;然后传递给该元素的父元素#xff0c;父元素再传给父元素#xff0c;如此一级一级往上传递。如果事件发生的元素不处理事件#xff0c;而是让事件传递到祖先元素#xff0c;让祖先元素处理#…Javascript事件通过冒泡传递事件最初发生在某个元素然后传递给该元素的父元素父元素再传给父元素如此一级一级往上传递。如果事件发生的元素不处理事件而是让事件传递到祖先元素让祖先元素处理这就是事件委托。
事件委托很经典的应用就是在菜单上 上面的菜单可以这样写事件处理
$(#menuBox).click(function(event){var target event.target; //获取触发事件的元素
})
这样我们只需要在父元素上监听一次点击事件就好了不用每个item都监听一次click事件。因为监听事件消耗的资源少了可以提高网页性能减少内存占用。
另外事件委托在一些内容动态生成的情况下非常有用web APP很多这样的用法比如上面的菜单我要增加一个按钮如果不使用委托我需要
1向#menuBox插入一个新的Item元素 2为新的Item元素绑定事件
如果使用委托我只要第1步就好了事件是父元素来处理的我不需要关心。
有动态生成就有动态删除现在我要把我刚刚新增的Item元素删除掉。直接remove掉Item的内容就行吗不行这样绑定在Item上的事件并没有取消掉还在监听浪费资源不说还很容易造成各种奇怪的问题。 参考文档what’s the benefit of event delegation