使用stopPropagation()方法阻止事件冒泡 $(document).ready( function () { $( ' switcher ' ).click( function (event){ if ( this .id == ' switcher-narrow ' ){ $( ' body ' ).addClass( ' narrow ' ); } else if ( this .id == ' switcher-large ' ){ $( ' body ' ).addClass( ' large ' ); } $( ' switcher .button ' ).romoveClass( ' selected ' ); $( this ).addClass( ' selected ' ); event.stopPropagation(); };) });
使用 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 ' ); } };) });