Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止默认链接,但激活链接_Javascript_Jquery - Fatal编程技术网

Javascript 阻止默认链接,但激活链接

Javascript 阻止默认链接,但激活链接,javascript,jquery,Javascript,Jquery,在我的导航菜单中,我有一个要使用的下拉列表。实际的下拉很好,我使用preventDefault()防止了自动冒泡但是现在下拉列表中的所有链接都不再工作 我如何使下拉菜单工作,不冒泡和下拉菜单中的所有链接工作 编辑:我还使用了event.stopPropagation()也没有任何效果。这是怎么回事 这是我的代码: // Toggle dropdowns $('.menu-item-has-children').click(function(e){ e.preventDefault();

在我的导航菜单中,我有一个要使用的下拉列表。实际的下拉很好,我使用
preventDefault()防止了自动冒泡但是现在下拉列表中的所有链接都不再工作

我如何使下拉菜单工作,不冒泡和下拉菜单中的所有链接工作

编辑:我还使用了
event.stopPropagation()
也没有任何效果。这是怎么回事

这是我的代码:

// Toggle dropdowns
$('.menu-item-has-children').click(function(e){
    e.preventDefault();
    $(this).find('.sub-menu').toggleClass('open');
});
要停止冒泡,请使用

仅用于防止事件的默认操作发生


啊,现在我明白你的问题了。问题在于,当单击菜单项打开子菜单时,由于该项是指向
#
的锚定,文档将滚动到顶部

为了避免这种情况,我建议去掉
href=“#”

或者,仅当单击的元素是该元素而不是后代时,才可以使用
preventDefault

$('.menu-item-has-children').on('click', function(e){
    if(this == e.target) e.stopPropagation();
    // ...
});
要停止冒泡,请使用

仅用于防止事件的默认操作发生


啊,现在我明白你的问题了。问题在于,当单击菜单项打开子菜单时,由于该项是指向
#
的锚定,文档将滚动到顶部

为了避免这种情况,我建议去掉
href=“#”

或者,仅当单击的元素是该元素而不是后代时,才可以使用
preventDefault

$('.menu-item-has-children').on('click', function(e){
    if(this == e.target) e.stopPropagation();
    // ...
});
要停止冒泡,请使用

仅用于防止事件的默认操作发生


啊,现在我明白你的问题了。问题在于,当单击菜单项打开子菜单时,由于该项是指向
#
的锚定,文档将滚动到顶部

为了避免这种情况,我建议去掉
href=“#”

或者,仅当单击的元素是该元素而不是后代时,才可以使用
preventDefault

$('.menu-item-has-children').on('click', function(e){
    if(this == e.target) e.stopPropagation();
    // ...
});
要停止冒泡,请使用

仅用于防止事件的默认操作发生


啊,现在我明白你的问题了。问题在于,当单击菜单项打开子菜单时,由于该项是指向
#
的锚定,文档将滚动到顶部

为了避免这种情况,我建议去掉
href=“#”

或者,仅当单击的元素是该元素而不是后代时,才可以使用
preventDefault

$('.menu-item-has-children').on('click', function(e){
    if(this == e.target) e.stopPropagation();
    // ...
});



您可以使用e.target检查单击了哪个元素,如果单击的元素是子菜单链接,则不使用默认值您可以使用e.target检查单击了哪个元素,如果单击的元素是子菜单链接,则不使用默认值您可以使用e.target检查单击了哪个元素,如果单击的元素是子菜单链接,则不要阻止默认值。您可以使用e.target检查单击的元素,如果单击的元素是子菜单链接,则不要阻止默认值。您是否可以共享html示例
preventDefault!==stopPropagation
更多信息,请访问您是否可以共享html示例
preventDefault!==stopPropagation
更多信息,请访问您是否可以共享html示例
preventDefault!==stopPropagation
更多信息,请访问您是否可以共享html示例
preventDefault!==stopPropagation
有关此操作的更多信息,遗憾的是,使用stopPropagation()无法停止屏幕顶部的捕捉。它确实激活了链接though@patkay你能贴一把小提琴来展示这种行为吗?这有点大杂烩,但希望你能看到它@patkay所以你想加载一个新页面,但让下拉列表保持打开状态?是的,当你打开下拉列表时,你会得到选项,单击其中一个选项,它会将你带到新页面,下拉列表关闭并重置。不幸的是,使用StopperPagation()不会停止捕捉到屏幕顶部。它确实激活了链接though@patkay你能贴一把小提琴来展示这种行为吗?这有点大杂烩,但希望你能看到它@patkay所以你想加载一个新页面,但让下拉列表保持打开状态?是的,当你打开下拉列表时,你会得到选项,单击其中一个选项,它会将你带到新页面,下拉列表关闭并重置。不幸的是,使用StopperPagation()不会停止捕捉到屏幕顶部。它确实激活了链接though@patkay你能贴一把小提琴来展示这种行为吗?这有点大杂烩,但希望你能看到它@patkay所以你想加载一个新页面,但让下拉列表保持打开状态?是的,当你打开下拉列表时,你会得到选项,单击其中一个选项,它会将你带到新页面,下拉列表关闭并重置。不幸的是,使用StopperPagation()不会停止捕捉到屏幕顶部。它确实激活了链接though@patkay你能贴一把小提琴来展示这种行为吗?这有点大杂烩,但希望你能看到它@patkay所以你想加载一个新页面,但让下拉列表保持打开状态?是的,当你打开下拉列表时,你会得到选项,单击其中一个选项,它会带你进入新页面,关闭下拉列表并重置对不起,我有点jquery新手。我该怎么办?你能给我看一些示例代码吗?没问题。这很粗糙,但可以让您了解需要执行的操作$('.menu项有子菜单')。单击(函数(e){//检查单击的项是否没有带有子菜单调用的父ul,如果(!($(e.target).parents('ul').hasClass('sub-menu')){e.preventdeaul();$(this)。查找('.sub-menu').toggleClass('open');}});请原谅格式化,不能让堆栈溢出来允许格式化对不起,我是一个jquery新手。我该怎么做?你能给我看一些示例代码吗?没问题。