查找祖先是否具有某个CSS类

时间:2014-01-29 02:50:04

标签: javascript jquery

我想知道是否有更简单的方法来检查元素是否具有特定类的祖先。

考虑以下HTML代码:

<ul id="uniqueID" class="parentClass">
    <li class="subclassA">
        <div class="subclassB">
            <nobr>
                <a href="#" class="subclassC1" data="MyText"></a>
                <a href="index.php/things" class="subclassC2" style="">MyText</a>
            </nobr>
        </div>
    </li>
    <li class="subclassA"> ... </li>
    <li class="subclassA"> ... </li>
    <li class="subclassA"> ... </li>
</ul>
<div>other elements in this page which I want to select</div>

现在,我可以通过使用jQuery选择器选择元素<a href="index.php/things" class="subclassC2" style="">MyText</a>来检查特定格式的href。然后我可以做.parent()已知次数(4),然后检查我现在移动到的那个特定元素的class属性。虽然这工作得很好,但我很好奇是否有更好的方法可以做到这一点,或许可以让我更有活力?

PS。我选择了很多符合$('[href *= index.php]')格式的元素,所以我想保留这些元素,但删除那些属于类{{{}成员后代的分类。 1}}。目前我只是使用上面的选择器选择所有元素,然后使用listclass语句检查并查看它是否适合这种情况。再说一次,如果有更有效的方法来做到这一点(也许首先选择这些元素?)我很乐意听到它。

当前代码:

if

3 个答案:

答案 0 :(得分:2)

要概括,您可以使用

  

<强> .closest( “父类”)

答案 1 :(得分:1)

您可以使用closestis

$('[href*="index.php"]').each(function(){
    if ($(this).closest('ul').is('.parentClass')) {
        //do things''
    }
});

答案 2 :(得分:1)

if($(this).parents("ul.parentClass").length == 0){
   //do something
}