我正在使用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/
答案 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
匹配,因为它是可见的,因此无论其可见性如何,它都会返回其子项内的文本。