我使用了无序列表,列表项,jQuery和CSS创建了一个下拉菜单。单击它们时,没有菜单项(锚点)有效。单击锚点时发生的所有操作都会消失。如果我右键单击一个锚点然后在新选项卡中打开它,它会按照我的预期重定向。 Here是一个显示我的代码和手头问题的jFiddle。请注意,菜单有点难以打开,您必须单击图标的底部。如果有人可以建议为什么锚没有正确打开,那将非常感激。
HTML:
<span class="menu_item" id="settings">
<ul>
<li>
<a href="#" onclick="return false;">☼</a>
<ul>
<li>
<a href="/admin.php">Admin Center</a>
</li>
<li>
<a href="/login/process.php">Logout</a>
</li>
</ul>
</li>
</ul>
</span>
答案 0 :(得分:4)
return false;
中的settings_open
会做两件事,其中一件就是取消默认操作(在链接之后)。请记住,点击从后代元素冒泡到祖先元素。
如果您将return false;
更改为event.stopPropagation()
,则不会阻止默认设置,并且链接可以正常工作。 (也没有理由从事件处理程序返回true
。)
function settings_open(event){
settings_canceltimer();
settings_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
event.stopPropagation(); // <== Change here
}
// Removed return true here
}