0

我正在尝试为具有类 .showme 的孩子添加类 '.open' 到父 li 到目前为止我已经尝试了几件事(prev、prevAll、has 等),但我无法做到正确。

这是我的 html 结构,也是一个可以处理的jsFiddle。任何建议将不胜感激。

<ul class="product-categories">
    <li class="sub">
        <a href="#">Women</a>
        <ul>
            <li class=""> <a href="#">Clothing</a></li>
            <li class="showme"> <a href="#">Footwear</a></li>
        </ul>
    </li>
    <li class="no-sub"> <a href="#">Men</a></li>
    <li class="no-sub"> <a href="#">Children</a></li>
    <li class="offers"> <a href="#">Offers</a></li>
</ul>

$(".showme").prevAll("li.sub:first").addClass("open")
4

4 回答 4

2

使用 .closest(),找到类 .showme 的第一个元素,然后找到类 sub 最接近的父 li

$('.showme:first').closest('li.sub').addClass('open');
于 2013-09-02T07:29:07.427 回答
0
$(".showme").closest("li.sub:first").addClass("open");

参见最近的参考

于 2013-09-02T07:26:24.347 回答
0

您需要使用最接近()而不是prev()as prev 并且prevAll()会查看以前的兄弟姐妹,并且您需要搜索父级。您可能不需要 :first 在选择器中,因为 cloest 将返回单个元素。

现场演示

$(".showme").closest("li.sub").addClass("open")

作为附加说明,您没有library在给定的小提琴中包含必需的 js。

于 2013-09-02T07:26:40.717 回答
0

这个怎么样?

$('.showme').closest('li.sub').addClass('open');
于 2013-09-02T07:26:43.873 回答