如果子b为空而没有成功,我会尝试隐藏父元素li。你能告诉我我做错了什么吗?非常感谢你。
Jquery的:
$('.mod-links li a b').each(function(){
if($(this).text() == 0){
$(this).parent('li').remove();
}
});
HTML:
<ul class="mod-links ui-listview ui-listview-inset ui-corner-all ui-shadow" data-inset="true" data-theme="d" data-role="listview">
<li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-d" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-icon="arrow-r" data-iconpos="right" data-theme="d"> <!-- parent element -->
<div class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a class="small ui-link-inherit" href="/cz/cs/268_.html">
<b></b> <!-- empty element -->
</a>
</div>
<span class="ui-icon ui-icon-arrow-r ui-icon-shadow"> </span>
</div>
</li>
</ul>
答案 0 :(得分:2)
由于b
中没有空的textnode,您可以使用:empty selector
$('.mod-links li').has('a b:empty').remove()
如果b
可以有空格,那么
$('.mod-links li').filter(function () {
return $.trim($(this).find('a b:empty').text()) == '';
}).remove()
答案 1 :(得分:1)
您可以使用 :empty 选择器选择空的b
元素以及 .closest() 以获取最近的祖先{ {1}}并删除它:
li
答案 2 :(得分:0)
而不是if($(this).text() == 0){
,请使用if($(this).is(":empty")){
。
jQuery的:
$('.mod-links li a b').each(function(){
if($(this).is(":empty")){
$(this).closest('li').remove();
}
});
小提琴:http://jsfiddle.net/L7FPJ/
另请注意,我已将.parent('li')
更改为.closest('li')
,因为.parent
仅从DOM树中的一个级别检索元素。