2013-01-21 325 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'检查是无用的 –

相关问题