jQuery如何绑定&取消绑定到窗口但附加到元素?

时间:2011-11-24 17:54:26

标签: jquery jquery-ui

我正在构建一个下拉菜单。当您单击箭头时,下拉列表将打开。

当菜单打开时,我想关闭菜单项单击或文档模糊上的菜单。但似乎我不想这样绑定以下内容:

$(document.body).bind('click',function(e) {
    if(menuopen) {

因为这会跟踪菜单的所有点击。有没有办法只在菜单打开时让这个绑定工作?当菜单关闭时解除绑定?

由于

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

$(document.body).on("click blur", function () {
  $("div.dropdown.open").removeClass("open");
})

$("div.dropdown div.arrow").on("click", function () {
  $(this).closest("div.dropdown").addClass("open");
})

这假设添加.open CSS类显示菜单,而删除它会隐藏菜单。

请注意,自jQuery 1.7起,.on()可用。早期版本使用.bind().delegate()获得相同的效果。