【问题标题】:When to use on() and click() in jquery [duplicate]何时在 jquery 中使用 on() 和 click() [重复]
【发布时间】:2013-10-08 18:09:39
【问题描述】:

jquery中使用on()和click()有什么区别?

例如:两者的工作方式相同:

    $(".classname").click( function() {
       var toAdd = $('input[name=checkListItem]').val();
    });

    $(".classname").on("click", function () {
    var toAdd = $('input[name=checkListItem]').val();
    });

什么时候应该使用 .on() 以及什么时候应该使用 click()。如果两者相同,应该使用哪一个?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

上面使用的两种语法都是一样的.......click().on()调用的捷径

不同之处在于当你使用只有.on()支持的事件委托语法时

例如:

$(document).on("click", ".classname", function () {
    var toAdd = $('input[name=checkListItem]').val();
});

当您使用您使用的语法时,它只会将处理程序注册到在执行代码时存在的那些元素,如果稍后添加具有相同类的新元素,则不会触发处理程序那个被点击了。

事件委托是这个问题的解决方案...这里我们将处理程序注册到一个父元素,该元素将出现在 dom 中,并带有作为第二个参数传递的过滤条件...当事件冒泡到父元素时元素它根据过滤器选择器测试目标及其祖先,如果满足,则处理程序将被执行。

【讨论】:

  • + .on() 支持.on('keyup click doubleclick')等多个事件
【解决方案2】:

.on 添加具有定义名称的事件侦听器。一些事件是预定义的,例如 click、onchange、onkeyup、onkeypress、onkeyrelease 等。

但是如果有原生事件,比如 .click() 你应该使用它而不是 .on("click")。

或者简而言之:没有什么不同,这个事件只是预定义的,你应该使用它的原生函数。

在我看来,您应该使用 html 属性。因为当您的代码变得越来越大时,您在调试页面时会更容易找到它。

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 2012-08-30
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多