选择所选孩子的父母

时间:2011-04-04 08:34:34

标签: jquery jquery-selectors

首先,如果这是一个多余的问题,请原谅我。我想你会同意合理地专门搜索是一个困难的案例。

我的html看起来像

<li class='signature'>
    <span class='label'>Signature:</span>
    <div class='folding'>
        <span class='data'></span>
    </div>
</li>
<li class='issuer'>
    <span class='label'>Issuer:</span>
    <span class='data'></span>
</li>

等等。

我想使用jquery只对包含“折叠”类的div的任何li执行.addClass,而不是对其他lis执行。我确信我可以使用狡猾的.each语句来做到这一点,但我觉得直觉上必须有一种方法可以使用jquery选择器来完成。我已经到了

$('li > .moreclick').addClass("arrowable");

但是这当然会将类添加到span,而不是li。

我坚持使用.each? (如果是这样的话,任何关于最佳方法的提示都会很好,但不可否认的是,问题范围之外)。

谢谢!

6 个答案:

答案 0 :(得分:2)

尝试以下

$('li:has(.folding)').addClass("arrowable");

jQuery documentation

答案 1 :(得分:2)

如果li总是绝对的父母:

$("div.folding").parent().addClass("new-class")

否则,这将继续搜索层次结构,直到找到li

$("div.folding").closest("li").addClass("new-class")

[编辑] dioslaska的解决方案更好。保留我的参考资料。

答案 2 :(得分:0)

例如:

$('.folding').parent().addClass('arrowable');

//编辑太慢..

答案 3 :(得分:0)

试试这个。

$('li').has('.folding').addClass("arrowable");

答案 4 :(得分:0)

如果您只想查看李的直接子女:

$('li:has(> div.folding)').addClass("arrowable");

答案 5 :(得分:0)

请试试这个:

$("li:has(div.folding)").addClass("new-class")

这将精确选择li元素,该元素是具有类divs的{​​{1}}的父元素。