1


.on()イベントメソッドは起動しないが、.live()は起動する場合があります。
ただし、jQuery 1.7以降、.live()メソッドは非推奨になりました。
したがって、.on()メソッドを使用してイベントハンドラーをアタッチすることをお勧めします。

ここに問題があります-http: //jsfiddle.net/rGRdT/2/
ボタンをクリックすると、.one()メソッドが1回呼び出されますが、作成されたばかりの2番目のボタンをクリックすると、 .on()は呼び出されません。

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

ここで確認できます-http:
//jsfiddle.net/GFCt9/2番目のボタンをクリックすると、.live()メソッドが完全に呼び出されます。

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

では、上記の例の.live()メソッドのように機能するように.on()メソッドを使用するにはどうすればよいですか?

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

を呼び出したときにidを持つ要素がbutton2存在しない場合は$('#button2').on、何もバインドしていません。これはとは大きく異なりliveます。on空でないコレクションを呼び出す必要があります。

Sample

于 2012-12-05T19:51:59.170 に答える
0

「動作しない」jsfiddle スクリプトの例には、動作を妨げるバグがあります。すべてのスクリプトの実行('di'v).on(を妨げる単純な JavaScript エラーです。

期待どおりに構文が機能することを確認するために更新されたフィドルを試してください。.on()あなたが提供した単純なケースでは、使用する必要はなく.live()、新しいメソッドも必要ありません.on('event', 'selector', fn)

于 2012-12-05T19:59:57.657 に答える