【问题标题】:Attach not checked checkboxes callback on change在更改时附加未选中的复选框回调
【发布时间】:2012-03-25 19:15:10
【问题描述】:

所以我有一个带有复选框字段的网格视图。在 jquery 中,我想编写一个函数,在选中未选中的复选框时执行某些操作。

function clickAllSize() {
    alert("helloy");
}

$(document).ready(function () {
    $("input :checkbox:not(checked)").change(clickAllSize());
});

问题是该功能在页面加载时立即运行,在任何点击之前。后续检查/取消检查不会触发警报。

【问题讨论】:

  • 你应该删除 input 和 :checkbox 之间的空格
  • 甚至更好 => $('input[type="checkbox"]:not(checked)')
  • 当 DOM 准备好时,是否已经渲染了复选框?如果没有,你应该使用on函数

标签: javascript jquery gridview checkbox


【解决方案1】:

应该是这样的:

$(document).ready(function () {
    $('input[type="checkbox"]:not(checked)').change(clickAllSize);
});
  1. 在更改回调中,您应该给出函数名称,而不是调用它。
  2. 来自docs

因为 :checkbox 是 jQuery 扩展而不是 CSS 规范的一部分,使用 :checkbox 的查询无法利用原生 DOM querySelectorAll() 方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用 [type="checkbox"]。

Jquery 设计用于处理 0+ 选定元素,因此在调试 JQuery 代码时始终检查选择器长度:

var amount = $("input :checkbox:not(checked)").length;
alert(amount);  // -Probably 0...

【讨论】:

    【解决方案2】:

    去掉change(clickAllSize())后面的()

    【讨论】:

    • 现在它永远不会发出警报
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    相关资源
    最近更新 更多