11

私は非常に重要なものを見逃しているに違いありません.parent().parent().parent()..などを使用してDOMを下に移動し、.next().next()を使用してDOMを上に移動しました。

私はこれが間違っていることを知っており、より信頼できるものが必要であることを知っています。クリックされた要素 $(this) から DOM をトラバースして、クリックされた要素が「last」のクラスを持つ要素内にあるかどうかを確認するセレクターが必要です。

div.last > div > table > tr > td > a[THE ITEM CLICKED is in the element last]

div > div > table > tr > td > a[THE ITEM CLICKED is not in the element last]

結果に長さがある場合

var isWithinLastRow = [amazingSelector].length;

この場合は別のことをしてください。

4

4 に答える 4

22

これを試してみてください: - http://jsfiddle.net/adiioo7/PjSV7/

HTML:-

<div class="last">
    <div>
        <table>
            <tr>
                <td>
                    <a>Test</a>
                </td>
            </tr>
        </table>
    </div>
</div>
<div>
    <div>
        <table>
            <tr>
                <td>
                    <a>Test</a>
                </td>
            </tr>
        </table>
    </div>
</div>

JS:-

jQuery(function($){
    $("a").on("click",function(){
       if($(this).closest(".last").length>0)
       {
           alert("Clicked anchor with div parent class as last");
       }
    });
});
于 2013-06-12T15:09:56.050 に答える
7

あなたの質問は少しわかりにくいです。クリックされた要素に class を持つ祖先要素があるかどうかを確認したいのですがlast、はい?

もしそうなら、あなたはそうすることができます$.fn.parents

if ($(this).parents('.last').length) {
    // element has an ancestor element with the class "last"
}
于 2013-06-12T15:05:07.433 に答える
3

あなたはこれを行うことができます -

if($(this).closest(".last").length > 0) {
   alert("it's inside");
}
于 2013-06-12T15:06:11.643 に答える
1

.closest()を使用できます

var isWithLastRow = $(this).closest('div.last').length
于 2013-06-12T15:05:21.180 に答える