0

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

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

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

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

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

4

2 回答 2

11

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

不同之处在于当您使用仅受支持的事件委托语法时.on()

前任:

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

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

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

于 2013-10-02T11:10:50.173 回答
-1

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

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

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

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

于 2013-10-02T11:14:54.953 回答