在多个部分(accordion)中,我有一个段落和无序列表的组合(动态生成)。
我正在尝试实现的是删除空标签/一个或另一个,如果为空,则两个都删除。如果'p‘和'ul’元素都为空,则删除其父元素'section‘。
<section>
<span>-</span>
<h3>(a)Heading</h3>
<div class="acc-box" style="display: block;">
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<ul></ul>
</div>
</section>
<section>
<span>-</span>
<h3>(b)Heading</h3>
<div class="acc-box" style="display: block;">
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<ul>
<li><a href="#" target="new.window">link</a></li>
<li><a href="#" target="new.window">link</a></li>
<li><a href="#" target="new.window">link</a></li>
<li><a href="#" target="new.window">link</a></li>
</ul>
</div>
</section>
<section>
<span>-</span>
<h3>(d)Heading</h3>
<div class="acc-box" style="display: block;">
<p>text here</p>
<ul></ul>
</div>
发布于 2012-06-30 17:00:51
遍历每个部分并获取您感兴趣的元素。然后对它们进行过滤,只得到空的。如果这两个集合的大小相同,则它们都是空的,您可以删除相应的部分。如果不是,只删除空元素。
$('.acc-box').each(function() {
var $elements = $(this).children('p, ul'), // get all intersting elements
$empty = $elements.filter(function() { // get empty ones
return $.trim($(this).text()) === "";
});
if($empty.length === $elements.length) { // all are empty
$(this).closest('section').remove(); // remove section
}
else { // otherwise
$empty.remove(); // remove empty elements
}
});
发布于 2012-06-30 16:52:50
嘿,你可以试试这个:http://jsfiddle.net/qjyzc/
同样,你也可以为li
做同样的事情。
希望这能帮上忙,让我知道我是否漏掉了什么
代码
$('p')
.filter(function() {
return $.trim($(this).text()) === ''
})
.remove()
https://stackoverflow.com/questions/11272507
复制相似问题