【发布时间】:2015-04-12 02:12:17
【问题描述】:
event.target 传递给 hide.bs.dropdown 处理程序是下拉列表本身,而不是启动事件的元素。
如何从 hide.bs.dropdown 事件对象中获取启动事件的元素?
<div class="dropdown" id='drop'>
<button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
...
</ul>
</div>
<button class='btn btn-primary'>Other Button</button>
Javascript:
$('#drop').on('hide.bs.dropdown', function(e) {
console.log(e.target); //
})
打开下拉菜单,点击按钮,查看console.log目标。
JSFiddle:http://jsfiddle.net/DTcHh/4215/
如果可能,我不希望将点击事件绑定到整个页面。
我试图阻止在我的文档上单击某些元素时关闭下拉菜单。
更新
我最终使用了这种方法:https://stackoverflow.com/a/19797577/2414886,但我仍然希望有一个更紧凑的解决方案。
【问题讨论】:
-
我假设您正在尝试在下拉列表中点击该项目?否则,它会在模糊时隐藏,这意味着您可能会通过挂钩 window.focus on hide 来获得好运
-
@Ted 嗨,Ted,不,但我应该澄清一下。我试图阻止下拉菜单以 return false 关闭;当我的页面的某些元素被点击时。
标签: jquery twitter-bootstrap jquery-events