2014-09-27 94 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相匹配,因爲它是可見的,因此它也返回其子內的文本,而不管它們的可見性如何。