2016-07-26 117 views
1

有沒有辦法讓/選擇一個元素通過它的屬性值,只是因爲它是可能的屬性值:jQuery的獲取/按屬性值選擇元素

$('[attribute="value"]') 

例如,我會成立使用jQuery這樣的特性:

$('#foo').prop('my-property', 'value'); 

,然後我想找到具有財產'my-property'的元素,它的價值'value'

+0

任何特定的屬性? –

+0

你的意思是像一個輸入值? – Zeph

+0

任何特定元素? – MCMXCII

回答

5

不,沒有任何暴露在選擇器級別的東西可以通過屬性值來選擇,只是(如您所知)屬性值。

一些屬性是屬性的反射,這意味着設置屬性設置屬性,它允許您使用屬性選擇器。例如,一個input元素的defaultValue屬性反映了它的value屬性(它的value屬性沒有)。

否則,您可以選擇您所能做的,並使用filter將結果列表篩選爲您實際需要的元素。

回覆您的編輯:

例如,我會使用jQuery這樣設置屬性:

$('#foo').prop('my-property', 'value'); 

沒有,直接沒有辦法通過屬性來選擇,你'd需要像我上面的filter建議:

var list = $("something-that-gets-you-close").filter(function() { 
    return this["my-property"] == "value"; 
}); 

你mi GHT考慮使用data-*屬性代替:

$("#foo").attr("data-my-property", "value"); 

然後

var list = $("[data-my-property='value']"); 

以選擇它(內引號是可選的用於匹配CSS identifier的定義的值)。請注意,屬性值始終是字符串。

請注意:jQuery的data函數是data-*屬性的簡單訪問器,這是一個持續的誤解。不是這樣。它通過jQuery管理與元素相關聯的數據高速緩存,這是初始化data-*屬性,但與它們斷開連接。特別是,.data("my-property", "value")不會讓你稍後通過[data-my-property=value]選擇器找到。

+1

謝謝你這麼徹底的答案!其實這也是我在互聯網上搜索它後認爲我自己。無論如何,現在它也在SO上。 –