0

jQuery のイベント委任を使用する場合、.on が呼び出された要素と、イベントが呼び出された要素を取得する方法はありますか?

jQuery:

$(".item").on("click","a",function() {
    var link = $(this); // a tag
    var itemDiv = // what?
});

HTML:

<div class="item">
    <a href="#">Link</a>
    <a href="#">Link</a>
    <a href="#">Link</a>
    <a href="#">Link</a>
</div>
4

3 に答える 3

3

... .on が呼び出された要素と、イベントが呼び出された要素を取得する方法はありますか?

イベントがどの要素に関連付けられているかを知りたい場合は、event.delegateTargetを使用できます。

次のように使用できます。

$(".item").on("click", "a", function (event) {
    var link = $(this); // a tag
    var itemDiv = event.delegateTarget;
    console.log(itemDiv);
});

デモ- event.delegateTarget の使用


質問の2番目の部分を理解しているかどうかはよくわかりませんが、イベントを開始した正確な要素を知りたい場合は、event.targetを使用できます。

これがあなたの意図したものかどうかはわかりませんが、念のため、以下に例を追加しました。

次のように使用できます。

$(".item").on("click", "a", function (event) {
    var link = $(this); // a tag
    var initiatedBy = event.target;
    console.log(initiatedBy);
});

これは、たとえばspanリンク内などで、クリックされた正確な要素を検査する必要がある場合に便利です。

これは、コンテナにイベントをアタッチしたいが、コンテナ内の正確な要素がクリックされない限り、コンテナ内のイベントをトリガーしたくない場合にも便利です。


デモ- イベントを開始した要素の検査 (2 番目のリンクには が含まれていspanます。コンソール ログの違いを参照してください)


于 2013-11-10T08:23:38.850 に答える
0

これを試して:

$(".item").on("click","a",function() {
    var link = $(this); //the element on which the event was called
    var itemDiv = $(this).closest(".item"); //the element on which on was called
});
于 2013-11-10T08:14:47.940 に答える
0

.parent()関数を使用できます....

このチュートリアルのリンクを参照してください:

http://www.w3schools.com/jquery/traversing_parent.asp

http://coursesweb.net/jquery/jquery-parent-children-nth-child

于 2013-11-10T08:22:59.343 に答える