我正在通過O'Reilly jQuery Cookbook。在p。 100有一個例子,我沒有得到一個細節。我在第一週看jQuery,所以這並不奇怪,但我希望有人能澄清。jQuery迭代問題(由書中的例子困惑)
功能是用幾個鈴鐺&口哨撥動:
onValue
和offValue
都是布爾值,而且必須具有相反意義,它可能是更清晰的只具有其中之一,但這個想法是以適應某些地方(例如)name
是「禁用」。 可選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);
});
};
如何set(this, on)
在這裏工作的?它似乎在列表元素,但需要發生每個元素,我不明白什麼會導致任何迭代。我會期待更多的東西,如on === undefined
情況下,是這樣的:
this.each (function(i, element) {
set($(element), on);
)}
所以,我失去的東西嗎?
我有罪不盡可能靠近我應該有閱讀代碼,我刪除我的答案。現在我想說你沒有提供足夠的信息。你如何知道該集合被應用於元素列表?爲了讓我關注正在發生的事情,我需要了解toggleAttr是如何應用的。 – mikerobi 2010-10-29 22:04:28
我知道,因爲'toggleAttr'被定義爲jQuery.fn的一個方法(希望術語是正確的,我是一個C++開發人員,對於jQuery來說是新的)。這將在以下情況下調用: 'jQuery('ul#booklist li')。toggleAttr(「related」,true,false,true);' 或 'jQuery('#workers li')。toggleAttr 「on-shift」,true,false);' – 2010-10-29 22:45:31