jQuery中的命名空间功能
问题描述:
这两段代码有什么区别?两者都工作得很好,为什么在函数中使用.dropdown.data-api?我在网上阅读了关于命名空间的知识,但我不清楚这一点。任何人都可以告诉我什么是名称空间函数的使用?jQuery中的命名空间功能
$('html').on('click.dropdown.data-api',
function() {
$el.parent().removeClass('open')
})
}
$('html').on('click',
function() {
$el.parent().removeClass('open')
})
}
答
命名空间事件允许您针对特定事件,如果您希望解除绑定或触发它。
想象一下,你有一个绑定到相同的元素(S)的两个同类事件。
$('.something').on('click', function() { /* do something */ });
$('.something').on('click', function() { /* do something else */ });
由于我们没有命名空间无论哪种情况,现在很难解除绑定或触发一个而不是其他。现在考虑:
$('.something').on('click.one', function() { /* do something */ });
$('.something').on('click.two', function() { /* do something else */ });
因为这个时候每个事件都有自己的命名空间,我们现在可以触发或者解除绑定一个或另一个,留下其他不变。
$('.something').off('click.one'); //unbind the 'one' click event
$('.something').trigger('click.two'); //simulate the 'two' click event
[编辑 - 如@jfrej右下方指出,命名空间意味着你有时甚至不需要引用事件类型名称。所以,如果你有一个鼠标悬停和点击一个单一命名空间的事件上,则您可以用off('.namespace')
既解除绑定]
+1让我很好奇也。 – 2012-07-09 11:05:43
你好艾米特我希望你是不是在谈论下拉插件,其中第一个是标准的'.on'事件的http://*.com/questions/11208483/get-error-in-event-handler-for-undefined -un-defined-in-chrome-and-dropdown -d soimething like this这个问题有一个代码':)' – 2012-07-09 11:10:56