2012-02-22 24 views
3

jquery1.71では、.live()は非推奨です。それでも、それでも動作します。なぜ.live()は動作しますが、.on()は動作しませんか?

var toggleBtn = document.createElement('input'); 
toggleBtn.id = 'toggleBtn'; 
toggleBtn.type = 'button'; 
toggleBtn.value = 'Close'; 
box.appendChild(toggleBtn); 

$('#toggleBtn').live('click', function() { 
    alert("hihi");    
}); 

私はお勧めしました。不思議なことに、これは失敗します

var toggleBtn = document.createElement('input'); 
toggleBtn.id = 'toggleBtn'; 
toggleBtn.type = 'button'; 
toggleBtn.value = 'Close'; 
box.appendChild(toggleBtn); 

$('#toggleBtn').on('click', function() { 
    alert("hihi");    
}); 
+0

非推奨とは、「削除済み」または「機能不全」を意味しません。それは "これを使用しないでください。これは将来、ある時点で削除されるためです"。 –

+0

私が何かを逃していない限り、 'on'は完全にうまく動作します:http://jsfiddle.net/twawk/1/ – Thomas

答えて

5

ドキュメントを完全に読んでください。 .on().live()(または.delegate())のように動作するには、2番目の引数が委任先のセレクタでなければなりません。

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

もちろん、より具体的なセレクタを使用することができます。

+0

@Xander awesome、ty。 –

+0

それは動作します!ありがとう、次回に投稿する前にまずドキュメントを読む – ngzhongcai

0

これは私のために正常に動作しますが、ここでjsFiddleです:

のFirefox 11.0のUbuntu 11.10に。

関連する問題