2013-01-21 571 views
1

我在考慮是否有辦法查找元素的屬性是否包含指定值。屬性是未知的。如果我有這樣的HTML:查找元素的某些屬性是否包含特定值

<input class="first" type="checkbox" data="THE-VALUE" /> 
    <input class="second" type="checkbox" /> 
    <input class="third" type="checkbox" name="THE-VALUE" /> 

我想找到所有曾與價值THE-VALUE屬性(在這種情況下.first.third)的輸入。在輸入爲3的情況下,我不需要解決方案,但是如果我有50個輸入並且包含THE-VALUE的屬性都不相同。我已經嘗試過諸如.attr(':contains("THE-VALUE")')$('input[="THE-VALUE"]')之類的東西,但顯然不起作用。

所以我的問題是..有什麼方法可以找到?

+3

如果你需要做到這一點,你真的NE編輯首先考慮重組您的應用程序。 –

+2

唯一的辦法似乎是遍歷每個'input'元素的每個屬性......這不太好。 –

回答

6
$("input").filter(function() { 
    return $.grep(this.attributes, function(arg) { 
     return arg.nodeValue === "THE-VALUE"; 
    }).length > 0; 
}).prop("checked", true); 

DEMO:http://jsfiddle.net/7tsZN/


或者作爲選擇的擴展:

$.expr[':'].hasattrval = function(e, i, p) { 
    return $.grep(e.attributes, function(arg) { 
     return arg.nodeValue === p[3]; 
    }).length; 
}; 

$("input:hasattrval('THE-VALUE')").prop("checked", true); 

DEMO:http://jsfiddle.net/7tsZN/1/

+4

一個非常好的解決方案,以一個可怕的問題:) –

+0

好一個@VisioN .. – Gopesh

+0

非常好,即使'> 0'檢查是無用的 –

相關問題