我正在通过O'Reilly jQuery Cookbook 。在p。 100有一个例子,我没有得到一个细节。我在第一周看jQuery,所以这并不奇怪,但我希望有人可以澄清。
这个功能是一个带有几个铃铛的功能。口哨:
onValue
和offValue
都是布尔人,必须有相反的意义,而且只有其中一个可能更清楚,但想法是容纳某些地方(例如){ {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
那么,我错过了什么吗?
答案 0 :(得分:0)
如果未设置on
,则toggleAttr函数将遍历每个元素,检查name
属性的当前值设置为什么,并将其与onValue
变量进行比较。
当设置on
时,这意味着您正在告诉toggleAttr“我希望您将所有元素切换为true / false并忽略当前值”。因此,它不需要循环遍历所有元素并检查当前值的设置,因为您告诉它强制该值。