【问题标题】:jquery selector for all checked checkboxes that are not disabled所有未禁用的选中复选框的 jquery 选择器
【发布时间】:2012-09-03 16:56:26
【问题描述】:

如何找到所有已选中且未禁用的复选框?

【问题讨论】:

    标签: jquery jquery-selectors checkbox


    【解决方案1】:

    像这样:

    $("input[type='checkbox']:checked").not(":disabled")...
    

    这会查找类型为checkboxinputs 字段,这些字段已被选中且未被禁用。如果这不起作用,您应该使用属性检查:

    $("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") 怎么样?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-06
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 2019-10-15
        • 2012-05-08
        • 2014-06-29
        • 2013-01-24
        相关资源
        最近更新 更多