Jac*_*han 4 javascript jquery javascript-events
我在谈论以下内容:
.unbind().click(function () {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
它看起来有点狡猾,但它有意义:开发人员想要先删除绑定到该元素的任何事件,然后绑定一个click事件.
这个问题有更好的解决方案吗?或者纠正我的思维方式.
这不是很好的练习,因为您无法控制哪些点击事件未被绑定.有两种不同的方法可以改善这种情况:
您可以使用命名空间来控制解除绑定再次绑定的click事件:
$(selector).off('click.namespace').on('click.namespace', function(e) { //...
Run Code Online (Sandbox Code Playgroud)
使用添加到链接中的类将其标记为已注册(这不会取消绑定先前绑定的事件,但它有助于防止多个事件绑定,这在大多数情况下会在off(绑定)之前使用(解除on绑定):
$(selector).not('.registered').addClass('registered').on('click', function(e) { //...
Run Code Online (Sandbox Code Playgroud)
你甚至可以把它变成一个性感的小插件,写道:
$.fn.register = function(register_class) {
register_class || (register_class = 'registered'); // lets you control the class
return this.not('.' + register_class).addClass(register_class);
};
Run Code Online (Sandbox Code Playgroud)
像这样,你可以调用register每个选择器:
$(selector).register().on('click', function(e) { //...
Run Code Online (Sandbox Code Playgroud)
或者使用特定类,如果采用"已注册":
$(selector).register('special_handler_registered').on('click', function(e) { //...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4876 次 |
| 最近记录: |