1

我将一些方法从 更改$(selector).live('click', function(){});$(selector).on('click', function(){});

起初它似乎工作完全相同。但是当我在 DOM 上插入新的 html 时,使用相同的选择器插入的新元素, $(selector).on('click', function(){});在它们被 live() 方法捕获之前并没有被捕获。

为什么?我错过了什么?

4

1 回答 1

4

.on与 相比,采用一组不同的参数.live。您不能只用另一个替换一个(而且$(selector).on.live没有意义)

正确的语法是:

$(document).on('click', selector, function(){});

这将绑定到所有匹配的元素,selector无论它们何时添加到 DOM。

笔记:

代替document,您可以使用元素的父级,只要该父级保留在 DOM 中。

例如:

<div id="myDiv">
    <p>Hello World</p>
    <p>Hello World</p>
</div>

然后你可以这样做:

$('#myDiv').on('click', 'p', function(){});

该点击事件将针对<p>添加到的所有标签触发#myDiv

笔记:

$(selector).on('click', function(){})

和做的一样

$(selector).bind('click', function(){})

(jQuery 1.7.1 建议使用.on代替.bind

于 2012-03-28T17:42:57.310 回答