Javascript document.on(';event';)和$().event之间的差异

Javascript document.on(';event';)和$().event之间的差异,javascript,jquery,Javascript,Jquery,我最近遇到了一个问题 $('.klass').change(function () { ... }); 在某些情况下没有开火,并找到了解决方案以便使用 $(document).on('change', '.klass', function () { ... }); 相反。解释是,我的元素是在侦听器声明之后创建的,或者其他东西阻止它启动 所以我可能永远不应该使用第一种方法?并对任何事件使用第二种方法(单击、更改等): 有人能解释一下这两者之间的区别和可能的陷阱吗 change调用.on $()

我最近遇到了一个问题

$('.klass').change(function () { ... });
在某些情况下没有开火,并找到了解决方案以便使用

$(document).on('change', '.klass', function () { ... });
相反。解释是,我的元素是在侦听器声明之后创建的,或者其他东西阻止它启动

所以我可能永远不应该使用第一种方法?并对任何事件使用第二种方法(单击、更改等):


有人能解释一下这两者之间的区别和可能的陷阱吗

change
调用
.on

$().change = function( types, data, fn ) {
    return this.on( types, null, data, fn );
}

change
调用
.on

$().change = function( types, data, fn ) {
    return this.on( types, null, data, fn );
}

第一种方法很好,但正如您所说,在创建事件处理程序之前,您需要确保元素已加载到DOM中

$(document).ready(function () {
   // dom has been loaded, now you can attach event handlers
})

正如@wZVanG所说的,
change()
只是在上调用
的糖分,没有实际区别。

第一种方法很好,但正如您所说的,在创建事件处理程序之前,您需要确保元素已加载到DOM中

$(document).ready(function () {
   // dom has been loaded, now you can attach event handlers
})

正如@wZVanG所说,
change()
只是在
上调用
的糖分,没有实际区别。

主要区别是第二个允许使用多个事件。而不是说

$('.klass').click(function(){
    //some content
});
$('.klass').change(function(){
    //same exact content, repeated
});
你可以改为写作

$('.klass').on('click change', function(){
    //some content, it applies to both now.
});
或者您可以使用(有些多余)


主要区别在于,第二个允许使用多个事件。而不是说

$('.klass').click(function(){
    //some content
});
$('.klass').change(function(){
    //same exact content, repeated
});
你可以改为写作

$('.klass').on('click change', function(){
    //some content, it applies to both now.
});
或者您可以使用(有些多余)

这可能会帮助您:这可能会帮助您: