首先,如果人们花时间去提供你用答案,你至少可以在接受那些答案。
第二,关于你的问题,你可以使用filter()
或检查是否为空值:
$('input[value!=""]:checkbox').addClass('selected');
http://jsfiddle.net/niklasvh/pEK3c/
或
$('input:checkbox').filter(function(){
return this.value.length;
}).addClass('selected');
例如:http://jsfiddle.net/niklasvh/duAB8/
编辑
关于这个问题,为什么不直接用$('input[value]')
来检查value
的存在,首先这取决于你是否想知道其是否为空,或者根本不存在,其次,也许是最重要的,你想让它在不同的浏览器上一致地工作吗?
下面的标记:
<input type="checkbox" value="2" />
<input type="checkbox" value="" />
<input type="checkbox" />
<input type="checkbox" value="23" title="a" />
用下面的选择:
$('input:[value]:checkbox').prop('checked',true);
将为下列结果:
Chrome 11, X - - X
FF4, X - X X
IE 8, X - X X
那么,你想知道的属性是否定义,还是其空?如果第一个,你可以期望该选择器的差异化结果。在第一个例子中,两者都给出了一致的结果X - - X
。
这将会是一个完全不同的故事,如果你是在寻找[title]
属性...
如果我正确阅读[documentation](http://api.jquery.com/has-attribute-selector/),我可以检查是否存在属性。我的测试表明相同。至于接受答案:我自己对此感觉非常糟糕,但到目前为止,我总是做了比其他任何受访者提出的更多的事情,并且我认为仅仅因为这个原因才接受答案是不对的。 – 2011-06-09 17:28:04
@Legate我在这里的回答太长,无法在评论中解释,所以我更新了答案,解释了只使用[value]选择器的问题。 – Niklas 2011-06-09 17:41:23
'this.value.length',请! – lonesomeday 2011-06-09 17:43:45