我有一个div里面有一个链接:
<div id="myDiv"> <a href="http://www.lol.com">Lol</a> </div>
点击< div />应该去某个地方,但点击孩子< a />应该去www.lol.com。从previous questions和jQuery website我已经看到.stopPropagation防止向上冒泡,但是如何防止气泡向下(这不是在这里需要的吗?
解决方法
活动只会起泡。因此,在元素的点击事件处理程序之前触发了一个元素的点击事件处理程序。如果你想要描述的行为,你需要添加一个单击事件处理程序到一个元素停止传播到div。
$("#myDiv a").click( function(event) { event.stopPropagation(); } );
并保留div上的任何事件处理程序。这应该允许事件执行它的默认操作,并且阻止被触发的div处理程序。
如果您只想防止点击链接,那么您可以更改div元素的事件处理程序
$("#myDiv").click( function( event ) { if( !$( event.target ).is( "a" ) ) { // existing event handler } } );