我得到了下面的HTML结构。
<ul class="nav">
<li class="header">Sites</li>
<li><a href="#" class="showSite" >Site A</a></li>
<li><a href="#" class="showSite" >Site B</a></li>
</ul>
我用这个jQuery
$("body").on('click', '.nav', function( ) {
console.log ( 'nav clicked' )
// other code //
})
当类为nav
的元素被点击时,jQuery会运行,但我不希望它在点击href链接时运行。
我已经在jQuery中添加了console.log ( this )
,它总是显示nav
元素被点击,即使点击了href。
只是为了补充这一点,我确实有一些其他的jQuery,当.showSite
被点击时触发,并且运行良好。我只是不想在href被点击时运行.nav jQuery。
当我点击href的时候,有没有可能不运行jQuery?
谢谢
更新我想我可能已经解决了这个问题。
$("body").on('click', '.nav', function(e) {
console.log ( 'nav clicked' )
if ( $(e.target).attr('class') == 'showSite' ) return false
// other code //
})
1条答案
按热度按时间wz3gfoph1#
正如注解中所建议的,您可以通过在
anchor
标记的click事件上调用stopPropagation()
来防止事件冒泡。