1


在某些情况下 .on() 事件方法不会触发,但 .live() 会触发。
但是,从 jQuery 1.7 开始,不推荐使用 .live() 方法。
所以最好使用 .on() 方法来附加事件处理程序。

所以这里是问题 - http://jsfiddle.net/rGRdT/2/
您可以看到当您单击按钮时调用了一次 .one() 方法,但是当您单击刚刚创建的第二个按钮时, .on() 不会被调用。

$('#button2').on('click', function() {
    $('div').append('<input type="button" value="add2" id="button3" />'); 
});

你可以在这里看到 - http://jsfiddle.net/GFCt9/
当你点击第二个按钮时, .live() 方法被完美地调用了。

$('#button2').live('click', function() {
    $('div').append('<input type="button" value="add2" id="button3" />');
});​

那么我怎样才能使用 .on() 方法,让它像上面示例中的 .live() 方法一样工作呢?

4

2 回答 2

3
$('#button2').live('click', function() {

不等于

$('#button2').on('click', function() {

但要

$(document).on('click', '#button2', function() { // you may replace document with something more precise but existing

button2如果您调用 id 时不存在您的元素,则$('#button2').on您没有绑定任何内容。这与live. 您必须调用on非空集合。

Sample

于 2012-12-05T19:51:59.170 回答
0

您的示例“非工作” jsfiddle 脚本有一个错误阻止它工作:一个简单的 javascript 错误('di'v).on(阻止所有脚本运行。

试试你的小提琴,更新后看到.on()语法按你期望的那样工作。在您提供的简单案例中,不需要使用.live()也不需要新方法.on('event', 'selector', fn)

于 2012-12-05T19:59:57.657 回答