首先,如果这是一个多余的问题,请原谅我。我想你会同意合理地专门搜索是一个困难的案例。
我的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? (如果是这样的话,任何关于最佳方法的提示都会很好,但不可否认的是,问题范围之外)。
谢谢!
答案 0 :(得分:2)
答案 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}}的父元素。