jQuery - 仅显示可见范围

时间:2014-09-27 17:01:08

标签: jquery

我正在使用jquery可见选择器,但它似乎仍然显示两个跨度。我做错了什么?

HTML

 <span id="description">
   Test   
   <span style="display:none; visibility:hidden;">Hide</span>
 </span>

的jQuery

 alert($("#description").filter(':visible').text());

的jsfiddle http://jsfiddle.net/fak2qtwL/1/

2 个答案:

答案 0 :(得分:3)

我认为你误解了它的运作方式。您的范围包含一个不可见的子元素,但您的父范围是可见的。所以你得到的结果是正常的。要以您想要的方式工作,您需要两个不同的span,如下所示:

alert($("span:visible").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="description">Test</span>
<span style="display:none;">Hide</span>

答案 1 :(得分:2)

jQuery text()方法返回匹配选择器内的所有文本内容 - 包括其子项内的文本。您的选择器与span#description匹配,因为它是可见的,因此无论其可见性如何,它都会返回其子项内的文本。