【发布时间】:2013-03-16 13:55:27
【问题描述】:
如果<li> 为空或者<li> 中有空格,我想隐藏所有<li>。
我是这样做的:
$("li:empty").filter(function(i,v){return $.trim($(v).text()).length == 0;}).css('display', 'none');
这是错误的语法吗?
如果我创建一个类以使空的<li> 不可见,它可以正常工作。像这样:
$("li[class='hideLi']").filter(function(i,v){return $.trim($(v).text()).length == 0;}).css('display', 'none');
但我不知道哪个<li> 会是空的。
谁能帮帮我。
如果<li> 为空,我想做display=none。
这是我的代码:-
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
$("td:empty").css('display', 'none');
$("div:empty").css('display', 'none');
$(!$.trim('li:empty')).hide();
$("li[class='hideLi']").filter(function(i,v){return $.trim($(v).text()).length == 0;}).css('display', 'none');
});
</script>
<ul>
<li style="border:red solid 1px ">HI</li>
<li style="border:green solid 1px "> </li>
<li style="border:blue solid 1px " class="hideLi"> </li>
</ul>
谢谢,
【问题讨论】:
-
:empty选择器将只选择那些没有任何内容的节点——甚至没有空格——在其中。那就是问题所在。$('li:empty')已过滤那些li中包含空间的节点。所以后面的过滤器是没用的。试试@Vassilis 的答案。
标签: jquery html html-lists hide trim