我有这个链接:
<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.