2010-10-11 54 views
1

我有相同ID的多個行和使用jQuery的功能時:jQuery的隱藏多行有相同的ID

hide(); 

只隱藏第一行而忽略其他行。

請問我該如何解決?

由於提前

Neveen

+4

切換到使用類:ids應該是唯一的 – 2010-10-11 11:28:15

回答

3

T.J Crowder以上是正確的。

您可能會發現在jQuery中有用的另一件事是each()函數。

$('tr.foo').each(
    function(object){ 
     // do more stuff 
     object.hide(); 
    } 
); 

有了這一點,你可以應用條件邏輯,以及,也許只有隱藏的行,如果它的內容包含過濾詞什麼的。

我實際上並不知道我不必使用'each'。 (謝謝TJ)

+1

不客氣。 :-)但實際上,以上是不正確的。 jQuery傳遞它的'each'函數(http://api.jquery.com/each/)的第一個參數是該項目的* index *。它將'this'設置爲指向該迭代的DOM元素(並且還將其作爲第二個參數傳遞,以防您已使用'proxy'(http://api.jquery.com/jQuery.proxy/)將'this'設置爲迭代器函數中的其他東西)。 – 2010-10-11 13:15:56

6

你不能有相同的ID多行,這是無效的標記。從規範(link):

id屬性指定其元素的唯一標識符(ID)。該值在元素的主子樹中的所有ID中必須是唯一的,並且必須至少包含一個字符。

相反,確保ID是唯一的或根本不使用的ID,使用一些其他的信息都共享  —共同class,或一個共同的位置(例如,同一table的所有兒童或tbody)等。如果他們沒有共同的方面,你可以使用,你需要給他們一個,但它不能是一個重複的ID。

例如,可以隱藏所有tr元素與類「富」你會使用:

$('tr.foo').hide(); 

更多關於jQuery的類選擇(這只是一個CSS類選擇)here

+0

非常感謝T.J.克羅德,行有普通班,我怎麼用它來隱藏他們? Thnaks – Neveen 2010-10-11 11:51:26

+0

@Neveen:我已經在答案中舉了一個例子。 – 2010-10-11 12:38:18