3

以前は:

$("#element").parent().click(function() { alert("smth"); });

新しいjQueryイベント委任でこれに相当するものは何onですか?

$(document).on("click", "how to select #element parent here?", function() { alert("smth"); });

更新:実際のコード(これが何を変更する可能性があるかはわかりませんが)

$(document).on("mouseover", ":has(>.hoverPhone)", function() {
    alert("smth");
});

「#hoverPhone」は、jqueryデータテーブルの列の1つのセル内のスパンです。

<tr class="odd">
    <td class=" sorting_1">05/11/2012</td>
    <td class="">Surname</td>
    <td class="">
        <span class="hoverPhone" title="Alternative No: 0123456789">9876543210</span>
    </td>
    <td class="">DIGITAL CAMERA</td>
    <td class="">6140</td>
    <td class="">CAMTRONICS</td>
    <td class="">clarify</td>
</tr>

ちなみにこれはまだ機能しません。

更新2:機能しているようです。個人的なコメント、しかし... ":has(>。element)"本当に、jQuery?次は何ですか?これはますます混乱しています。

4

4 に答える 4

7

私が持っている最も単純なもの:

$(document).on("click", ":has(>#element)", function(){...

デモンストレーション

于 2012-11-15T12:52:05.607 に答える
2

同じ方法でイベントリスナーを割り当てることもできます。

$('#element').parent().on('click', function() { });
于 2012-11-15T12:53:11.297 に答える
1

動的に追加された要素を処理するための委任を探している場合は、提案した方法でそれを行うことはできません。親になる可能性のあるすべての要素のクリックイベントを処理し、子として問題の要素があるかどうかを確認する必要があります...

$(document).on("click", "*", function() {
    if ($(this).children("#element").length > 0) {
        alert("parent clicked");
    }
});

documentより近いコンテナ要素に変更*し、可能であれば親タグタイプに変更することを強くお勧めします。

于 2012-11-15T12:59:59.550 に答える
1

これでも問題なく動作します。

$("#element").parent().on("click", function() {
     alert("smth"); 
});
于 2012-11-15T12:54:33.197 に答える