jQuery迭代问题(在书中以示例为例)

时间:2010-10-29 20:36:31

标签: jquery iterator toggle

我正在通过O'Reilly jQuery Cookbook 。在p。 100有一个例子,我没有得到一个细节。我在第一周看jQuery,所以这并不奇怪,但我希望有人可以澄清。

这个功能是一个带有几个铃铛的功能。口哨:

onValueoffValue都是布尔人,必须有相反的意义,而且只有其中一个可能更清楚,但想法是容纳某些地方(例如){ {1}}是“禁用”。  可选的name,也是一个布尔值,让调用者将其用作“set”而不是“toggle”

on

jQuery.fn.toggleAttr = function (name, onValue, offValue, on) { function set($element, on) { var value = on ? onValue : offValue; return value == null ? $element.removeAttr(name) : $element.attr(name, value); } return on !== undefined ? // next line is where I'm confused set(this, on) : this.each(function (i, element) { var $element = $(element); set($element, $element.attr(name) !== onValue); }); }; 如何在这里工作?它似乎正在处理 list 元素,但是每个元素都需要发生一些事情,而且我看不出会导致任何迭代的因素。我期待更像set( this, on )案例的内容,例如:

on === undefined

那么,我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

如果未设置on,则toggleAttr函数将遍历每个元素,检查name属性的当前值设置为什么,并将其与onValue变量进行比较。

当设置on时,这意味着您正在告诉toggleAttr“我希望您将所有元素切换为true / false并忽略当前值”。因此,它不需要循环遍历所有元素并检查当前值的设置,因为您告诉它强制该值。

实施例: http://jsfiddle.net/petersendidit/sHJC3/2/