jquery - .on ('click' ) VS 'selector.click

标签 jquery

也许我失去了理智,或者也许我错过了备忘录。我总是使用$(selector).click对于任何和所有点击事件,除非我与事后添加到 DOM 的元素进行交互。在这种情况下,我使用了类似 $(closest permanent parent).on('click',selector 的东西.

我看到这里有很多人只使用 . on()对于一切。我错过了 .on() 的好处吗?或者其他的东西?对我来说这似乎是不正确的。我已阅读文档,但没有理由使用 .on().click() .

与静态 DOM 元素交互时是否严格偏好?

编辑

显然我不清楚。我了解 .on() 的用途用于动态生成的元素。我的问题是Why use it for static elements

最佳答案

.click() 定义*为:

jQuery.fn.click = function( data, fn ) {
    return arguments.length > 0 ?
        this.on( 'click', null, data, fn ) :
        this.trigger( 'click' );

click 只是 on 函数的一部分,因此就性能而言,.on() 稍快一些。也就是说,差异可以忽略不计,这并不是我更喜欢 on 而不是 click 的真正原因。

我坚持使用 on 而不是 click 的真正原因是为了可维护性。通常我会通过绑定(bind) .on('click', ...) 方法来启动插件,然后将其更改为 .on('widgetaction', ...) 事件由点击触发,但也可以由按键或任何其他相关事件触发。

坚持使用 .on() 函数还意味着我可以轻松返回并从 .on('click', ...) 更改为 .on('click', 选择器, ...) 无需付出太多努力。

总的来说,这取决于一致性,我发现 .on() 使用起来比 .click() 更一致。

* 我修改了 source code稍微具体引用一下点击事件,原始未修改版本请引用 jQuery v1.10.2 第 7554-7564 行。

关于jquery - .on ('click' ) VS 'selector.click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749931/

相关文章:

jQuery Validate 和 Nice Select 完全一致吗?

javascript - 如何改变div的滚动速度

javascript - Bootstrap 日期时间选择器不允许用户输入时间

jquery - 使用 IIS 静态内容服务与从 SQL Server Jquery WCF 获取数据之间的性能差异

Javascript innerhtml 在第二次函数调用未定义函数时不显示

jquery - 如何将Element对齐到Div的中心

jquery - 如何向现有灯箱添加功能性滚动箭头?

javascript - jQuery inArray() 函数不适用于动态生成的数组,为什么?

javascript - 使轮播(图像 slider )在网页上移动

php - 我们如何根据名称打开不同的模态?