jquery的on
jQuery的on方法
jQuery的on()方法是用于绑定事件处理程序的核心函数,取代了旧版的bind()、delegate()和live()方法。它支持直接事件绑定和事件委托,适用于动态添加的元素。
基本语法
$(selector).on(event, childSelector, data, handler);
- event: 必需,指定事件类型(如
"click"、"mouseenter")。 - childSelector: 可选,用于事件委托的子元素选择器。
- data: 可选,传递给事件处理函数的额外数据。
- handler: 必需,事件触发时执行的函数。
直接事件绑定
绑定点击事件到现有元素:
$("#button").on("click", function() {
alert("Button clicked!");
});
事件委托
通过父元素处理动态添加的子元素事件:

$("#parent").on("click", ".dynamic-child", function() {
console.log("Dynamic child clicked");
});
多事件绑定
同时绑定多个事件类型:
$("#element").on({
mouseenter: function() {
$(this).css("background", "yellow");
},
mouseleave: function() {
$(this).css("background", "");
}
});
传递额外数据
向事件处理函数传递自定义数据:

$("#element").on("click", {name: "John"}, function(event) {
console.log("Data: " + event.data.name); // 输出 "Data: John"
});
命名空间事件
为事件添加命名空间便于管理:
$("#element").on("click.namespace", handler);
// 解绑特定命名空间事件
$("#element").off("click.namespace");
一次性事件
使用one()方法绑定只触发一次的事件:
$("#element").one("click", function() {
alert("This will only fire once.");
});
注意事项
- 事件委托性能优于直接绑定大量子元素事件。
- 动态添加的元素需通过父元素委托绑定事件。
- 使用
off()方法解绑事件防止内存泄漏。






