关于jquery中隐式迭代和each()的疑问

jquery是隐式遍历,但有些时候要用到each(),不太理解,先上个例子:

在《锋利的jquery》一书的5.3.1中,讲复选框的操作。

全选时用:
图片描述

反选时用:
图片描述

那么问题来了,在全选时直接.attr()选中,但是在反选时却先each(),再在each()中逐个的反选。

也就是说,在全选是用了隐式遍历,但反选却没有。

请讲讲原因。


看来是我理解的问题,我理解成一次全选,反过来是一次全取选,没考虑到判断判断的反选。疑惑解开,谢谢

阅读 4.3k
5 个回答

学库的时候少看书,多看官方文档。书的印刷、出版速度往往远远跟不上库的改进速度

几个问题

  1. attr方法和prop方法早在1.6(2011年)就已经分离了,checked绝大多数情况应当使用prop操作

  2. jQuery多数提供value的api都可以通过callback直接实现不同元素赋不同值

//反选
$('[name=items]:checkbox').prop('checked', function(idx, val){ return !val; })

以上信息在 http://api.jquery.com/prop/ 里面都有,关于attr和prop的区别在/attr 里也有一份

RTFM

反选的时候 attr 设置的值不确定

全选设定的值是固定的,
反选设定的值要根据当前状态进行翻转

看来是我理解的问题,我理解成一次全选,反过来是一次全取选,没考虑到判断判断的反选。疑惑解开,谢谢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题