呼び出されるこのようなコードがあるとします$(document).ready()
$(".someClass").click(function(){
//do something
});
後で、 class で要素を作成するための jquery がありますsomeClass
。上からクリックを自動的にアタッチする方法はありますか、それとも手動で再度アタッチする必要がありますか?
呼び出されるこのようなコードがあるとします$(document).ready()
$(".someClass").click(function(){
//do something
});
後で、 class で要素を作成するための jquery がありますsomeClass
。上からクリックを自動的にアタッチする方法はありますか、それとも手動で再度アタッチする必要がありますか?
はい。可能です。
$("body").on("click", ".someClass", function() {
// ...
});
最新バージョンの jquery を使用し、on
$(document).on('click', '.someClass', function(e){
//do something
});
Live
は非推奨ですが、とにかく使用できます (推奨されません)。
$('.someClass').live('click', function(e){
//do something
});
live
新しい要素もリッスンするがあります
$(".someClass").live('click', function(){
//do something
});
ただし、jquery 1.7 の時点で廃止されました。代わりに使用することをお勧めしますon
。
ただし、 を使用するにon
は、ハンドラーをバインドする要素のコンテナーが必要です。もちろん、body
orを使用することもできますdocument
が、より具体的な要素を使用することをお勧めします
$(".someClassContainer").on('click', '.someClass' function(){
//do something
});
これを行うには 2 つの簡単な方法があります。1 つ目は次の方法ですon()
。
$(".someClassParentElementPresentInTheDOMonDOMReady").on('click','.someClass',
function(){
//do something
});
もう 1 つは、新しい要素の作成時にクリック ハンドラを割り当てるだけです。どのようにしているのかわかりませんが、例を以下に示します。
$('#addElement').click(
function(){
var newElem = $('<div />',{'class' : 'someClass'}).click(function(){
// do something }).appendTo('.someClassParentElementPresentInTheDOMonDOMReady');
参考文献:
on()
.