我有一个 input
元素列表,使用一个选择器我想找到那些元素
- 是复选框
- 设置了
value
属性
我可以这样做吗?
我试过:
$(items).find("input:checkbox[value]")
$(items).find("input[value]:checkbox")
但是两者都忽略了 [value]
并且只测试了 input:checkbox
。
当然,我可以使用两个选择器,但只有一个会更好。
我的基本用例是 this .
基本上,我想根据其他复选框是否未选中来对复选框采取一些操作。在此示例中,“parent”复选框仍处于选中状态,因为函数 getChildrenCheckboxes
中的 jQuery 选择器 “input[value]:checkbox”
与“No Child”复选框以及其他复选框。
最佳答案
首先,如果人们花时间为您提供答案,您至少可以努力接受这些答案。
其次,关于您的问题,您可以使用 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
那么您是否有兴趣了解该属性是否已定义,或者它是否为空?如果是第一个,您可以期待该选择器的差异化结果。其中前 2 个示例都给出了 X - - X
的一致结果。
如果您正在寻找 [title]
属性,情况就会大不相同......
关于javascript - jQuery:是否可以在一个选择器中同时测试输入类型和属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296594/