可以绑定,将永远在DOM存在这样的$。对给父元素。
$(document).on('click','.test', function() {
console.log('Test clicked');
});
需要注意的是: 您可以将始终存在的DOM元素的任何父,越接近父更好的替代document
。
与click
绑定的简单事件不会作为click
将事件处理程序绑定到绑定时已存在于dom中的元素。因此,它不适用于稍后通过Ajax或jQuery动态添加到DOM的元素。为此,您必须使用event delegation
。你可以使用$.on
来达到这个目的。
检查的$.on
文档,你可以使用$.live
但$直播折旧。使用$ .on代替。为$ .live和$ .delegate的$。对等效语法,做同样的事情
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
在这种情况下,事件处理程序将被绑定到document
。并且事件将被jQuery委托给目标元素,在这种情况下test
类。
UPDATE
我建议你通过$.on
和$.off
方法引擎盖下使用$.on
所有事件处理的目的,因为所有其他的方法途径。
检查从jQuery的源v.1.7.2这些函数的定义
bind: function(types, data, fn) {
return this.on(types, null, data, fn);
},
unbind: function(types, fn) {
return this.off(types, null, fn);
},
live: function(types, data, fn) {
jQuery(this.context).on(types, this.selector, data, fn);
return this;
},
die: function(types, fn) {
jQuery(this.context).off(types, this.selector || "**", fn);
return this;
},
delegate: function(selector, types, data, fn) {
return this.on(types, selector, data, fn);
},
undelegate: function(selector, types, fn) {
// (namespace) or (selector, types [, fn])
return arguments.length == 1? this.off(selector, "**") : this.off(types, selector, fn);
}
这是这些方便的事件处理程序过于
blur focus focusin focusout load resize scroll unload click dblclick mousedown
mouseup mousemove mouseover mouseout mouseenter mouseleave change select
submit keydown keypress keyup error contextmenu
你可以看到所有的方法都使用$.on
真和$.off
自己。所以使用$.on
你至少可以保存一个函数调用,尽管在大多数情况下它并不那么重要。
实际上你想要做什么? –