javascript-jQuery:是否可以在一个选择器中同时测试输入类型和属性?
作者:互联网
我有一个输入元素列表,并使用一个选择器我想找到那些
>是复选框
>设置值属性
我可以这样做吗?
我试过了:
> $(items).find(“ input:checkbox [value]”)
> $(items).find(“ input [value]:checkbox”)
但是两者都忽略[value],仅测试输入:复选框.
当然,我可以使用两个选择器,但是只有一个更好.
我的基本用例是this.
基本上,我想根据是否未选中其他复选框对复选框进行一些操作.在此示例中,由于“ getChildrenCheckboxes”函数中的jQuery选择器“ input [value]:checkbox”与“ No Child”复选框以及其他复选框匹配,因此仍选中“ parent”复选框.
解决方法:
首先,如果人们花时间为您提供答案,那么您至少可以花一些精力来接受这些答案.
其次,关于您的问题,您可以使用filter()或检查value是否为空:
$('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]’)来检查值的问题,首先取决于您是否要知道其值是否为空,其次,也许是最重要的是,您是否希望它在不同的浏览器上都能一致地工作?
以下标记:
<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]属性,那将是完全不同的故事…
标签:jquery-selectors,javascript,jquery 来源: https://codeday.me/bug/20191102/1992156.html