我有一个dlist,如果隐藏下一个“dd ol”,我想在“dt”中添加一个类。
在下面的示例中,您看到隐藏了dd.dd2 ol,所以我想要上面的dt,折叠(添加一个类)
我在Stackoverflow上找到了这个:Delete <dt> without <dd> with jquery
$('dt').filter(function(){
return !($(this).next().is('dd'));
}).remove();
并尝试了类似的东西:
$('#someID dt').filter(function(){
return ($(this).next().is('dd ol').css('display') == 'none');
}).addClass('collapsed');
HTML:
<dl id="someID">
<dt class="dt1">List1<span> </span></dt>
<dd class="dd1" >
<ol>
<li class="listitem1"><a href="#" title="listitem1">listitem1</a></li>
<li class="listitem2"><a href="#" title="listitem2"><span class="txt">listitem2</span></a></li>
<li class="listitem3"><a href="#" title="listitem3"><span class="icon"> </span><span class="txt">listitem3</span></a></li>
</ol>
</dd>
<dt class="dt2">List2<span> </span></dt>
<dd class="dd2" >
<ol style="display: none;">
<li class="listitem1"><a href="#" title="listitem1">listitem1</a></li>
<li class="listitem2"><a href="#" title="listitem2"><span class="txt">listitem2</span></a></li>
<li class="listitem3"><a href="#" title="listitem3"><span class="icon"> </span><span class="txt">listitem3</span></a></li>
</ol>
</dd>
<dt class="dt3">List3<span> </span></dt>
<dd class="dd3" >
<ol>
<li class="listitem1"><a href="#" title="listitem1">listitem1</a></li>
<li class="listitem2"><a href="#" title="listitem2"><span class="txt">listitem2</span></a></li>
<li class="listitem3"><a href="#" title="listitem3"><span class="icon"> </span><span class="txt">listitem3</span></a></li>
</ol>
</dd>
</dl>
但它没有成功。
答案 0 :(得分:1)
最简单的方法是使用:hidden
selector:
$('dl#someID dd ol:hidden').parent().prev('dt').addClass('collapsed');
答案 1 :(得分:1)
在过滤器功能中尝试此操作:
return $(this).next().is('dd').has('ol:hidden').length > 0;