2010-06-28 70 views
4

在這個例子中(這是工作),點擊一個按鈕的部分切換可見/不可見。 很好,但是第2行中的代碼實際上在做什麼? 我找到了一個參考:eq(0)部分here on jQuery.com,但'>'我不知道。在螢火蟲下,如果'>'在那裏並不重要。Jquery> Selector

$("#btnHideShow").click(function() { 
       $("> :eq(0)", "#toggleGrid").toggle("blind"); 
       if ($("#btnHideShow").val() == "Hide List") { 
        $("#btnHideShow").val('Show List'); 
       } else { 
        $("#btnHideShow").val('Hide List'); 
       }; 
      }); 

回答

5

據我所知,您使用>來指定一個直接的孩子,而不是任何後代。

考慮:

<div class="parent"> 
    <ul class="child"> 
    <a href="#">foo</a> 
    <a href="#">bar</a> 
    </ul> 
</div> 

.parent a將匹配兩個環節,但.parent > a不會,因爲它們不直接後裔。類似地,.parent > .child也將匹配,如.child > a

在您提供的代碼中,您匹配#toggleGrid的直接子女。如果你只有直接的孩子,如果包含>,你可能不會注意到有什麼區別 - 但是你可能需要在後面提到的這個具體情況。

我總覺得這是有問題的努力落於其他民族的代碼 - 這是你想了解一件好事:)

退房this article如果你需要更多的信息。

+0

好的,這是有道理的。謝謝:) – JohnnyBizzle 2010-06-28 15:04:06

0

>是一個子選擇:

5.6子選擇 當元件是一些元素的子甲子選擇匹配。一個子選擇器由兩個或多個由「>」分隔的選擇器組成。

實施例(一個或多個):

以下規則集是BODY的兒童的所有P個元素的樣式:

體> p {線高度:1.3} 實施例(一個或多個):

下面的示例結合後代選擇和子選擇:

DIV醇>利p 它是一個LI的後代一個P元素相匹配; LI元素必須是OL元素的子元素; OL元素必須是DIV的後代。請注意,「>」組合器周圍的可選空白已被省略。

-1

根據SelectORacle,>前面沒有選擇器,它選擇的元素是任何其他元素的子元素。 因此,該選擇器看起來像是指在「toggleGrid」元素下找到的任何元素的第一個子元素。

SelectORacle在這裏:http://penguin.theopalgroup.com/cgi-bin/css3explainer/selectoracle.py但請注意,它不理解jQuery-isms。

編輯 —其實,雖然我會在這裏留下SelectORacle鏈接,我錯了,因爲我搞混了「:EQ(0)」;它不同於「:第一個孩子」。因此@tv等人是正確的,它只是「toggleGrid」下的一個孩子的第一件事。

+0

感謝您的幫助。這是有道理的,因爲div內正在顯示和隱藏div。 – JohnnyBizzle 2010-06-28 15:05:47

+0

其實我錯了,原因我不明白。 :-) – Pointy 2010-06-28 15:08:04

3

這是child selector爲引用元素的直接子代。該行是等效的(並寫得更好,IMO):

$('#toggleGrid > :first').toggle('blind'); 
+0

嗯....真的嗎?現在我必須去寫一個測試頁面:-) – Pointy 2010-06-28 14:59:28

+0

像往常一樣@tv! – Pointy 2010-06-28 15:07:30