编程语言
首页 > 编程语言> > javascript-jQuery:是否可以在一个选择器中同时测试输入类型和属性?

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