我最近遇到了一个问题
$('.klass').change(function () { ... });
不是在某些情况下开火,而是找到了解决办法
$(document).on('change', '.klass', function () { ... });
而不是。解释是,我的元素是在侦听器声明之后创建的,或者是其他什么东西阻止了它的触发。
所以我应该永远不要用第一种方法?并对任何事件使用第二种方法(单击、更改、.):
$(document).on('event', 'jquery-selector', function () { ... });
有谁能解释一下这两者的区别和可能的问题吗?
发布于 2015-06-09 17:36:46
change
调用.on
$().change = function( types, data, fn ) {
return this.on( types, null, data, fn );
}
发布于 2015-06-09 17:41:09
第一个方法很好,但正如您所说的,在创建事件处理程序之前,需要确保元素已加载到DOM中。
$(document).ready(function () {
// dom has been loaded, now you can attach event handlers
})
正如@wZVanG所说,change()
只是打电话给on
的糖,没有实际差别。
发布于 2015-06-09 18:58:57
主要的区别是第二个允许使用多个事件。而不是说
$('.klass').click(function(){
//some content
});
$('.klass').change(function(){
//same exact content, repeated
});
你可以写
$('.klass').on('click change', function(){
//some content, it applies to both now.
});
或者您可以使用(有些多余的)
$(document).on('click change', '.klass', function(){
//some content, it still applies to both.
});
https://stackoverflow.com/questions/30739000
复制相似问题