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新手。我该怎么做?你能给我看一些示例代码吗?没问题。