javascript - jQuery:是否可以在一个选择器中同时测试输入类型和属性?

标签 javascript jquery jquery-selectors

我有一个 input 元素列表,使用一个选择器我想找到那些元素

  1. 是复选框
  2. 设置了 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/

相关文章:

javascript - 在 Angular 中重新加载/启动事件 Controller

javascript - 将数据AJAX发送到RequestBody

jquery - 在 .delay() 中嵌入函数无法正常工作

asp.net - 使用 JQuery 在 GridView ASP.NET 中选择所有复选框

javascript - 从 Node js中的MYSQL元素集中选择特定元素

javascript - 如何在页面加载后手动调用 dragscroll 函数?

javascript - 单击以使用 Jquery 和 ajax 显示详细信息

jquery - :first and :first-child not clear 之间的区别

jQuery - 'this' 选择器在回调函数内不起作用

php - 将此数据库结果传递给 javascript 函数的正确方法是什么?