为什么使用.on()添加事件而不是直接添加事件?

gil*_*ero 1 javascript jquery

可能重复:
jquery on vs click方法

来自API:

.on():将一个或多个事件的事件处理函数附加到所选元素.

示例代码:

$("#dataTable tbody tr").on("click", function(event){
    alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)

我们可以写下这样的东西:

$("#dataTable tbody tr").click(function() {
        alert($this).text();
});
Run Code Online (Sandbox Code Playgroud)

为什么要在.on()中包装事件呢?

谢谢.

fca*_*ran 5

为什么要在.on()中包装事件呢?

在这个具体的例子中,使用on()你可以利用event delegation,所以不要为tr你可以简单地做的每个元素附加很多处理程序

$("#dataTable").on("click", "tr", function(event){
    alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)

此外,使用on()您可以namespace为您的活动分配一个,例如

$("#dataTable").on("click.mynamespace"...)
Run Code Online (Sandbox Code Playgroud)

因此,您可以稍后以更清洁,更精致的方式分离您的活动,例如

$("#dataTable").off(".mynamespace"...);
Run Code Online (Sandbox Code Playgroud)

虽然click(function()...)只是一种速记方法.on("click", function()...)