jQuery 1.7:将事件快捷方式(例如 click())转换为 on()?

发布于 2024-12-18 12:38:46 字数 383 浏览 0 评论 0原文

我刚刚发现 jQuery 1.7 引入了一个新方法,on()。通过我的简短研究,我将其视为绑定事件的一种综合方式,而不是决定 bind()live()delegate 中的哪一个() 使用。在我看来,这是一个非常好的补充,可以带来很多好处。但随后我不确定是否需要转换事件快捷方式,例如 click()。根据官方文档,click()的定义是仍然.bind('click', handler)的快捷方式。我认为 jQuery 开发人员在 v1.7+ 中重新定义 click() 和其他事件快捷方式以使用 on() 更有意义,不是吗?

I just found out that jQuery 1.7 introduced a new method, on(). With my brief study, I see it as a consolidated way to bind events, as opposed to decide which one of bind(), live(), and delegate() to use. IMO, this is a really nice addition that offers numerous benefits. But then I am not sure if I need to convert event shortcuts, such as click(). According to the official document, the definition of click() is still the shortcut to .bind('click', handler). I thought it would make more sense for the jQuery developers to redefine click() and other event shortcuts in v1.7+ to use on(), no?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沫尐诺 2024-12-25 12:38:46

jQuery 文档清楚地将 .click() 表示为 .on("click") 的简写,因此我想如果您愿意,您可以替换所有以前的调用。

on() 方法文档摘录:

某些事件有一些简写方法,例如 .click(),可用于附加或触发事件处理程序。有关简写方法的完整列表,请参阅事件类别。

方法 .on() 实际上与 .bind() 的作用相同,只不过您可以一次绑定多个事件,并选择一组实际引发此事件的儿童数量。

我认为使用 on() 而不是 click() 更有意义,除非您需要绑定多个事件或通过过滤子项做一些更棘手的事情。

jQuery documentation is clearly presenting .click() as a shorthand of .on("click"), so I guess you can replace all your previous calls, if you want.

Extract of the on() method documentation:

There are shorthand methods for some events such as .click() that can be used to attach or trigger event handlers. For a complete list of shorthand methods, see the events category.

The method .on() actually does the same as .bind() except that you can bind multiple events at once, and select a set of children that actually fire this event.

I don't think it makes more sense to use on() instead of click() unless you need to bind multiple events or do some more tricky stuff with filtering children.

冬天的雪花 2024-12-25 12:38:46

ghusse 是对的,无需将所有 .click() 快捷方式替换为 .on(),但您应该将 .live() 代码替换为 .on(),因为 .live() 被标记为已弃用并且可能以及 jQuery 1.8 中删除...讨论正在进行中。

$('SELECTOR').live('click', function(e) { ... });

$('UPSELECTOR').on('click', 'SELECTOR', function(e) { ... });

其中 UPSELECTOR 要么与 SELECTOR 相同(那么您可以省略 .on() 的第二个参数),要么它代表一个(一组) DOM 树中较高的元素,即事件冒泡时将遍历的元素。这里常见的选择是 documentbody

ghusse is right, there is no need to replace all of your .click() shortcuts with .on(), but you should replace your .live() code with .on() because .live() is marked as deprecated and might as well be removed with jQuery 1.8 ... discussion is ongoing.

$('SELECTOR').live('click', function(e) { ... });

$('UPSELECTOR').on('click', 'SELECTOR', function(e) { ... });

Where UPSELECTOR is either the same as SELECTOR (then you can omit the second parameter of .on()) or it represents a (set of) element(s) higher in the DOM tree, i.e. element(s) that will be traversed when the event is bubbling. A common choice here would be document or body

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文