2012-07-01 17 views
-1

可能重複JQuery的元素:
jquery data selector選擇具有()的一些值由數據集

我有類 'CONNECTION_NAME' 的幾個要素。這些元素中的每一個都使用data()JQuery函數綁定到它的唯一id。我試圖查詢找到具有給定ID的元素,但我似乎無法讓它工作。

爲了這個測試,我創建了一個只有1個元素的頁面,並設置了元素的id。

我可以驗證ID被設定,當我查詢在控制檯中的元素,它顯示了ID返回:

$('.connection_name').data() 
    Object 
    id: "4fea76bd99ea080d19000002" 
    __proto__: Object 

我讀過其他questsions /帖元素應由$(「選擇[數據屬性=值]」)來選擇,但似乎並沒有工作:更糟糕的是

$('.connection_name[data-id="4fea76bd99ea080d19000002"]') 
[] 

,甚至當我嘗試選擇它沒有任何價值(只是屬性),我仍然沒有返回:

$('.connection_name[data-id]') 
[] 

我不確定問題是什麼,或者如何去做這件事。

+0

該鏈接有一個完美的答案(如@ jfriend00的回答是不夠好) –

+0

@Thomas,其實你提供的鏈接沒有幫助的。在這個答案中,他們建議$('selector [data-attribute = value]')將起作用,但它不會,因此我的問題。 –

+0

答案有一個完整的代碼負載,以使其工作。閱讀接受的答案。 –

回答

6

下面是做這件事:

var theItem = $('.connection_name').filter(function() { 
    return($(this).data("id") === "4fea76bd99ea080d19000002"); 
}); 
+0

這很好,謝謝jfriend。你碰巧知道爲什麼$('selector [data-attribute = value]')模式不起作用?有幾個消息來源似乎聲稱它確實如此。再次感謝。 –

+0

他們是兩回事。如果您在元素上設置data- *屬性,那麼jQuery在文檔準備就緒時讀取它們,並將它們同步到其內部數據存儲。如果稍後使用'.data()'更新這些值,則屬性不會更改。同樣,如果使用'.attr()'更新data- *屬性,jQuery內部數據存儲將不會改變。因此,您必須遍歷符合您的標準的每個元素,並讀取其數據。 – Interrobang

+0

@RyanOgle - 當你做一個屬性選擇器時,它只會從實際的DOM對象中讀取屬性,因此''.connection_name [id =「4fea76bd99ea080d19000002」]''只有在對象上有一個data-id屬性那個價值。只有屬性存在於HTML中或者使用'.attr()'設置時纔會出現這種情況。如果它的id值是用'.data(「id」,「4fea76bd99ea080d19000002」)設置的,那麼該值不會被設置爲對象的屬性(它設置在jQuery內部的數據結構中),因此它會沒有被選擇器操作發現。 – jfriend00