2014-09-27 31 views
0

我正在使用jQuery可见选择器,但它似乎仍然显示两个跨度。我究竟做错了什么?jQuery - 只显示可见范围

HTML

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

jQuery的

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

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

+0

你期待什么结果呢?匹配'#description'选择器的'span'是可见的,隐藏的嵌套在可见的区域中。 – wrschneider 2014-09-27 17:04:01

回答

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

好吧,我现在明白谢谢队友! – cDemeke 2014-09-27 17:40:09

2

jQuery的text()方法返回内选择相匹配的所有文本内容 - 这包括他们的子女中的文本太。您的选择器与span#description相匹配,因为它是可见的,因此它也返回其子内的文本,而不管它们的可见性如何。