所有未禁用的选中复选框的 jquery 选择器
Posted
技术标签:
【中文标题】所有未禁用的选中复选框的 jquery 选择器【英文标题】:jquery selector for all checked checkboxes that are not disabled 【发布时间】:2012-09-03 16:56:26 【问题描述】:如何找到所有已选中且未禁用的复选框?
【问题讨论】:
【参考方案1】:像这样:
$("input[type='checkbox']:checked").not(":disabled")...
这会查找类型为checkbox
的input
s 字段,这些字段已被选中且未被禁用。如果这不起作用,您应该使用属性检查:
$("input[type='checkbox']:checked").not("[disabled]")...
或者,正如@lonesomeday 敏锐地指出的那样,您可以将它组合成一个选择器:
$("input[type='checkbox']:checked:not(:disabled)")...
我已经整理了一个概念验证in this fiddle。
【讨论】:
这里没有必要使用两个单独的选择器。你也可以input[type="checkbox"]:checked:not([disabled])
。【参考方案2】:
$('input[type="checkbox"]').filter(function()
return !this.disabled && this.checked;
)
【讨论】:
是的,但是从选择器中丢失:checked
并使用过滤器函数!this.disabled && this.checked
会大大提高性能。
为什么?我认为选择器引擎会比我的功能更快。尽管如此,它更容易理解,我将编辑我的答案。
因为浏览器不理解:checked
,所以jQuery必须自己做,比较慢。添加额外的布尔检查要快得多。
@lonesomeday :checked
是一个普通的 CSS 选择器,而不是一个 jQuery 扩展。
@Esailija 确实,我的错误。尽管如此,它在 IE
【参考方案3】:
$('input[type="checkbox"]:checked').not(":disabled");
这是fiddle
【讨论】:
你必须像我的回复一样使用 .filter() 函数【参考方案4】:你可以使用这个选择器..
$('input[type=checkbox]:checked:not(:disabled)')
检查此FIDDLE
【讨论】:
【参考方案5】:$("input[type='checkbox']:checked:enabled")
怎么样?
【讨论】:
以上是关于所有未禁用的选中复选框的 jquery 选择器的主要内容,如果未能解决你的问题,请参考以下文章
需要 JQuery 选择器的帮助,该选择器返回所有选中的复选框,这些复选框是具有指定类的节点的子节点