javascript – 如何在BootStrap下拉列表中阻止URL末尾的#?

我有这个链接:

<a href="#" id="myBtn"><i class="icon-user"></i><span>Add user</span></a>

我使用preventDefault()并返回false以避免地址末尾的#.而且效果很好.问题是当我对Bootstrap的下拉列表做同样的事情时.如果我留下返回false,它不会按照假设添加#,但它也会阻止下拉消失,就像我删除return false一样.
这是我的下拉代码:

<li class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="ddBtn">
    <i class="icon-wrench"></i><span>Parent Item<b class="caret"></b></span>
  </a>
  <ul class="dropdown-menu">
    <li><a href="#" id="ddSonBtn">Child item</a></li>

使用Javascript:

$("#ddSonBtn").click(function () {
    //some code

    e.preventDefault();
});

这有解决方案吗?

我在用

Bootstrap 2
jQuery

谢谢.

最佳答案
它可能有也可能没有很好的文档记录,但是没有必要同时调用preventDefault()并返回false;在jQuery事件中.

编辑:来自jQuery的文档:“从事件处理程序返回false将自动调用event.stopPropagation()和event.preventDefault()”(http://api.jquery.com/on/#event-handler)

返回false;相当于e.preventDefault();和e.stopPropagation();

preventDefault会阻止元素的默认行为 – 例如提交表单的提交按钮,导航到特定href的锚点等.

stopPropagation阻止事件冒泡DOM.意思是,不会在目标元素的父元素上触发事件.

选择使用事件时所需的选项.在您的情况下,您可能只需要在Dropdown的单击处理程序中调用preventDefault.

此外,在您的代码中,在函数范围内使用return是最后一行执行.运行该函数后,不会执行其后的任何代码.

转载注明原文:javascript – 如何在BootStrap下拉列表中阻止URL末尾的#? - 代码日志