gpt4 book ai didi

javascript - .unbind().click(function() {...}) 是一个好习惯吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:52:36 26 4
gpt4 key购买 nike

我说的是:

.unbind().click(function () {
// Do something
}

这对我来说看起来有点狡猾,但它是有道理的:开发人员希望首先删除绑定(bind)到该元素的所有事件,然后再绑定(bind)一个点击事件。

这个问题有更好的解决方案吗?或者纠正我的思路。

最佳答案

这不是很好的做法,因为您无法控制哪些点击事件未绑定(bind)。有两种不同的方法可以改善这一点:


使用事件命名空间(更快)

您可以使用命名空间来控制您只解除绑定(bind)您要再次绑定(bind)的点击事件:

$(selector).off('click.namespace').on('click.namespace', function(e) { //...

使用类(最快)

使用添加到链接的类将其标记为已注册(这不会取消绑定(bind)以前绑定(bind)的事件,但它有助于防止多个事件绑定(bind),这是大多数情况下你会使用 off 的问题(在 on(绑定(bind))之前取消绑定(bind)):

$(selector).not('.registered').addClass('registered').on('click', function(e) { //...

你甚至可以把它变成一个小性感的插件,写:

$.fn.register = function(register_class) {
register_class || (register_class = 'registered'); // lets you control the class
return this.not('.' + register_class).addClass(register_class);
};

像这样,你可以在每个选择器上调用register:

$(selector).register().on('click', function(e) { //...

或者对于一个特定的类,如果 «registered» 被采用:

$(selector).register('special_handler_registered').on('click', function(e) { //...


性能?

如果您想了解不同处理程序的性能:

Check out this performance test here

关于javascript - .unbind().click(function() {...}) 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com