JavaScript-阻止父锚点元素上的event.default

JavaScript-阻止父锚点元素上的event.default,javascript,jquery,html,Javascript,Jquery,Html,我制作了一个基本的移动导航下拉菜单,它使用嵌套的标签打开第二(和第三)级导航。但是,由于元素嵌套在锚定标记中,因此它们也会触发默认锚定事件。当单击所述锚的子元素时,是否有任何方法可以防止锚默认事件 HTML <ul class="main-menu"> <li> <a href="some-link.html">Some Link <span class="target"></span>

我制作了一个基本的移动导航下拉菜单,它使用嵌套的标签打开第二(和第三)级导航。但是,由于元素嵌套在锚定标记中,因此它们也会触发默认锚定事件。当单击所述锚的子元素时,是否有任何方法可以防止锚默认事件

HTML

<ul class="main-menu">
    <li>
        <a href="some-link.html">Some Link
            <span class="target"></span>
        </a>
        <ul class="submenu">
            <li><a href="some-link.html">Some Link</a></li>
            <li><a href="some-link.html">Some Link</a></li>
            <li><a href="some-link.html">Some Link</a></li>
        </ul>
    </li>
</ul>

您可以停止事件的传播,并取消其默认行为。见此:

$('span.target')。在('click',函数(事件){
event.stopPropagation();
event.preventDefault();
//这里的其余代码。。。

});您可以尝试此代码。当您单击锚点上的子锚点时,它会阻止父锚点元素的默认行为。我在这里使用核心javascript:

var menuAnchor=document.queryselectoral('.main menu a');
for(变量i=0,len=menuAnchor.length;i}
尝试
event.stopImmediatePropagation()
如果不想使用achor标记,为什么要使用它?为什么不使用div或其他span并使用js来实现您想要的行为呢?preventDefault不是DOM的一部分,它是事件的一部分。听起来你需要注意…做一个或另一个都可以…而且
return false
也可以这样做。在我的“自动”工作流程中添加这两行,以防我绑定到锚定标记(
a
)并阻止离开页面的默认行为(即
preventDefault()
),和
stopPropagation
以避免父元素的绑定事件被触发。我可能弄错了,但这不会简单地阻止我附加到的事件/处理程序冒泡到锚上吗?你是对的@FrederickM.Rogers,它将阻止冒泡我可能需要编辑我的问题,因为我试图做的是防止在单击标记时触发锚默认操作。Bun仅当标记被单击时,锚点才能按预期工作。这很可能是不可能的,但我知道我可以在单击标记时将两者都作为目标。不幸的是,这会阻止我想要的锚上的默认操作,我只是不希望它在单击锚内的子元素时触发。当你单击锚的子元素时,它会阻止默认操作(停止访问链接)。但是当你点击锚点(不是锚点的子锚点)时,它不会阻止默认设置(访问链接)。非常感谢。欢迎@FrederickM.Rogers:)
$('span.target').on('click', function(event) {

    $(event.target).parent().preventDefault();

    // Do somthing

});