次のコードを使用して、動的に生成されたボタンがクリックされたことを検出しています。
$(document).on("click",".appDetails", function () {
alert("test");
});
通常、$('.appDetails').click()
を実行しただけであれば、$(this)
を使用してクリックされた要素を取得できます。上記のコードでこれをどのように達成できますか?
例えば:
$(document).on("click",".appDetails", function () {
var clickedBtnID = ??????
alert('you clicked on button #' + clickedBtnID);
});
できる限りシンプルに
ここでも$(this)
を使用します
$(document).on("click",".appDetails", function () {
var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id
alert('you clicked on button #' + clickedBtnID);
});
関数のイベントパラメータがありません。
$(document).on("click",".appDetails", function (event) {
alert(event.target.id);
});
これを処理する従来の方法は、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'));
});