2013-04-18 8 views
27

私は次のコードを使用して、動的に生成されたボタンがクリックされたことを検出しています。イベントでjQueryを使用してクリックされた要素を取得しますか?

$(document).on("click",".appDetails", function() { 
    alert("test"); 
}); 

通常、あなただけの$('.appDetails').click()をした場合は、クリックされた要素を取得するために$(this)を使用することができます。どのように私は上記のコードでこれを達成するだろうか?例えば

:それはあまりにも

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id 
    alert('you clicked on button #' + clickedBtnID); 
}); 

答えて

35

ような単純な。

$(document).on("click",".appDetails", function (event) { 
    alert(event.target.id); 
}); 
+0

更新質問 –

+0

はい、それを見.. uはウルのhtmlを投稿することができますことは、あまりにも – bipen

+0

が見えます。ごめんなさい。 –

23

あなたは、あなたの関数のイベントパラメータが欠落している

使用ここ$(this)することができ

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = ?????? 
    alert('you clicked on button #' + clickedBtnID); 
}); 
+3

これは私にとって完璧でした。それはクリックされた要素を与えます - $(これは)イベントを結んだ要素だけを与えました。 –

2

これを処理する従来の方法は、ES6ではうまく機能しません。イベントターゲットは、あなたが望む要素(それがイベントを受信した子かもしれない)ではないかもしれない、クリックされた要素になりますことを

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 

    this.delete(clickedElement.data('id')); 
}); 

注:あなたは、代わりにこれを行うことができます。実際の要素を取得するには:私は、サーバーからのキャッシュの問題を扱ってるよう

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 
    const targetElement = clickedElement.closest('.delete'); 

    this.delete(targetElement.data('id')); 
}); 
関連する問題