2012-04-25 29 views
1

好了,所以我有這個div包含一個UL:jQuery的如何獲得與顯示的第一個列表項:無

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("button").click(function(){ 
    alert($('#slider ul li[display="none"]:first').text()); 
    }); 
}); 
</script> 
<style type="text/css"> 
li 
{ 
display:inline; 
margin: 20px; 
} 
</style> 
</head> 
<body> 
<div id="slider" style="width:100%; overflow-x:hidden"><ul><li style="display:none">Steve 1</li><li style="display:none">Frank</li><li>Tim</li><li>Steve</li><li>Frank</li><li>Tim</li><li>Steve</li><li>Frank</li><li>Tim</li><li>Steve</li><li>Frank</li><li>Tim</li><li>Steve</li><li>Frank</li><li>Tim</li><li>Steve</li><li>Frank</li><li>Tim</li><ul> 
</div> 
<button type="button" style="float:left">Previous</button><div style="float:right">Next</div> 
</body> 
</html> 

我希望發生的是,當你按上一個按鈕,它會發現列表中的第一個項目顯示爲none,並顯示包含其內容的消息。在這種情況下Steve1。

所以我用$('#slider ul li[display="none"]:first')這意味着它應該找到div命名的滑塊,它是ul中的第一個列表項,其中display:none。

我在消息中得到一個空白。

任何人都知道我在做什麼錯。

我認爲它有與我構造的部分屬性做的:

http://api.jquery.com/attribute-equals-selector/

+0

它不因爲沒有'display =「none」'這樣的東西。 – Sparky 2012-04-25 03:43:41

回答

2
$('#slider ul li[style="display:none"]:first') 

方括號基於屬性選擇元素。沒有display屬性。但是可以使用style屬性。如果style屬性有其他風格的不僅僅是display:none那麼你可以使用一個RegExp選擇:

$('#slider ul li[style*="display:none"]:first') 

的asterik(*)表示字符串可以在任何地方存在的屬性的實際值內。

這裏是一個演示:http://jsfiddle.net/TAv3d/

文檔的jQuery選擇:http://api.jquery.com/category/selectors/

或者您可以使用功能DOM遍歷(這是一個快一點):

$('#slider').children('ul').children('li').filter('[style="display:none"]').first(); 
8

$('#slider ul li:hidden:first')是你在找什麼

http://api.jquery.com/hidden-selector/

:hidden下列條件相匹配,根據以上鍊接

元素可以被認爲是隱藏的幾個原因:

  1. 他們有沒有的CSS顯示值。
  2. 它們是type =「hidden」的表單元素。
  3. 它們的寬度和高度明確設置爲0.
  4. 祖先元素被隱藏,因此元素不會顯示在頁面上。
相關問題