jQuery:如果所选元素$(this)的父类名为'last'

时间:2013-06-12 15:02:53

标签: jquery dom traversal tree-traversal

我必须遗漏一些非常重要的东西,我一直在使用.parent()。parent()。parent().. etc来遍历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 个答案:

答案 0 :(得分:18)

试试这个: - 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");
       }
    });
});

答案 1 :(得分:5)

你的问题有点难以理解。您想检查单击的元素是否具有类last的祖先元素,是吗?

如果是这样,您可以使用$.fn.parents

执行此操作
if ($(this).parents('.last').length) {
    // element has an ancestor element with the class "last"
}

答案 2 :(得分:2)

你可以这样做 -

if($(this).closest(".last").length > 0) {
   alert("it's inside");
}

答案 3 :(得分:1)

您可以使用.closest()

var isWithLastRow = $(this).closest('div.last').length