jQuery中阻止冒泡事件的方法介绍 |
一、冒泡事件简介 当我们点击一个控件的时候,如果包括这个控件的父控件也有click事件,则会继续执行 。
二、阻止jQuery事件冒泡 jQuery对DOM的事件触发具有冒泡特性 。有时利用这一特性可以减少重复代码,但有时候我们又不希望事件冒泡 。这个时候就要阻止 jQuery.Event冒泡 。 在jQuery.Event的文档中的开头得知,jQuery.Event对象是符合W3C标准的一个事件对象,同时jQuery.Event免去了检查兼容IE的步骤 。 复制代码 代码如下: $("p").click(function(event){ event.stopPropagation(); // do something }) 但是这个方法对使用live绑定的事件没有作用,需要一个更简单的方法阻止事件冒泡:return false; 复制代码 代码如下: $(this).after("Another paragraph!"); return false; }); 兼容多个浏览器的终止冒泡函数: 复制代码 代码如下: function stopDefault(e) { //阻止默认浏览器动作(W3C) if (e && e.preventDefault) e.preventDefault(); //IE中阻止函数器默认动作的方式 else window.event.returnValue = false; return false; } 三、使用event.tatget属性 明确事件对象 事件处理程序中的变量event保存着事件对象 。而event.tatget属性保存着发生事件的目标元素 。这个属性是DOM API中规定的,但是没有被所有浏览器实现 。jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性 。通过.target,可以确定DOM中首先接收到事件的元素 。而且,我们知道this引用的是处理事件的DOM元素 。 使用event.tatget属性 明确事件对象 阻止事件冒泡的代码如下: 复制代码 代码如下: $(document).ready(function() { $(switcher).click(function(event){ if(event.target == this) { $(switcher .button).toggleClass(hidden); } };) }); |