Я пробираюсь через O'Reilly jQuery Cookbook . На стр. 100 есть пример, где я не получаю ни одной детали. Я в первую неделю смотрю на 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);
)}
Итак, я что-то упустил?