jquery - jQuery 中的命名空间函数

标签 jquery

这两段代码有什么区别?两者都工作得很好,那么为什么在函数中使用 .dropdown.data-api 呢?我在互联网上读到了有关命名空间的信息,但我对此并不清楚。谁能告诉我命名空间函数有什么用?

$('html').on('click.dropdown.data-api',
  function () {
    $el.parent().removeClass('open')
  })
}

$('html').on('click',
  function () {
    $el.parent().removeClass('open')
  })
}

最佳答案

如果您希望解除绑定(bind)或触发特定事件,则通过为事件命名可以定位特定事件。

假设您有两个相同类型的事件绑定(bind)到相同的元素。

$('.something').on('click', function() { /* do something */ });
$('.something').on('click', function() { /* do something else */ });

由于我们没有为任一事件命名,因此现在很难解除绑定(bind)或触发其中一个事件,但无法触发另一个事件。现在考虑:

$('.something').on('click.one', function() { /* do something */ });
$('.something').on('click.two', function() { /* do something else */ });

因为这次每个事件都有自己的命名空间,所以我们现在可以触发或取消绑定(bind)其中一个,而另一个保持不变。

$('.something').off('click.one'); //unbind the 'one' click event
$('.something').trigger('click.two'); //simulate the 'two' click event

[编辑 - 正如 @jfrej 在下面指出的那样,命名空间意味着您有时甚至不需要引用事件类型名称。因此,如果您在单个命名空间上同时发生了鼠标悬停和单击事件,则可以使用 off('.namespace') 取消两者的绑定(bind)。]

关于jquery - jQuery 中的命名空间函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11393811/

相关文章:

javascript - jquery如何改变你的网站背景?

jquery - Bootstrap 进度条动画使用 50% CPU

jquery - 如果 div 内所有 img src 均为 null,则删除 div

javascript - 搜索一个元素,看它是否包含某个字符串

javascript - 使用 JavaScript 选择特定的 DOM 元素

javascript - 调整 iFrame 内的 HTML - Javascript 不工作

javascript - 如何将垂直选项卡式内容面板更改为响应式可折叠媒体查询和 jquery?

jquery - 如何给ajax加载器超时?

Javascript 函数不起作用

javascript - 将固定的 div 保留在其容器中