javascript - 为什么这个检查所有复选框的 jQuery 代码不起作用?

标签 javascript jquery

HTML:

<table class="responsive" id="products">
    <a href="#" id="checkAllProducts">Do it</a>
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
</table>

​JS:

$(document).ready(function(){
  $('#checkAllProducts').click(function(){
    var checkbox = $('#products input:checkbox');
    checkbox.attr('checked',!checkbox.attr('checked'));
  });
});​

可用于调试here .

如果我这样做var checkbox = $('input:checkbox');,代码就可以工作。问题可能出在选择器中

此代码应在单击链接后选中所有复选框。但它并没有这样做。为什么?

最佳答案

您的 HTML 无效。您不能将 input 元素直接放入 table 元素内。当浏览器发现下一个元素不能跟随表格标记时,很可能会自动关闭表格标记 - 因此无法找到作为 #products 选择器的子项的复选框。

<div class="responsive" id="products">

成功了。

此外,“checked”是一个属性,因此您应该使用 prop() 来访问它:

checkbox.prop('checked', !checkbox.prop('checked'));

http://jsfiddle.net/UNqfv/6/

关于javascript - 为什么这个检查所有复选框的 jQuery 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916138/

相关文章:

javascript - 获取第一个字符后的所有内容

javascript - 从其他站点的 HTML 标签中获取值(value)

javascript - typeof typeof x 返回字符串而不是对象,因为 null 的类型是对象

javascript - 使用 JavaScript 进行访问限制

javascript - 如何解决 "Animated: ` useNativeDriver` 不受支持,因为缺少 native 动画模块。”在 react 导航中?

javascript - HTML 中的动态下拉菜单错误

javascript - 使用 Angularjs 取消选中基于另一个复选框的所有复选框

java - 如何使用 Ajax.beginform + 部分 View 更新我的表,在 ym asp.net mvc Web 应用程序内部

javascript - 链接中的 "Easter Egg"- 通过 CTRL + 单击激活

jquery - 使子 Div 满窗口宽度