Je travaille mon chemin à travers le O'Reilly jQuery Cookbook. Dans. 100 il y a un exemple où je ne reçois pas un détail. Je suis dans ma première semaine à regarder jQuery, donc ce n'est pas une surprise, mais j'espère que quelqu'un peut clarifier.jQuery question d'itération (confus par l'exemple dans un livre)
La fonction est une bascule avec quelques cloches & sifflets:
onValue
et offValue
sont à la fois booléens, et doivent avoir des sens opposés, et il aurait pu être plus clair d'avoir un seul d'entre eux, mais l'idée est pour accueillir quelque chose où (par exemple) name
est "désactiver". l'option on
, également une valeur booléenne, permet de l'utiliser comme appelant un « ensemble » au lieu d'une « bascule »
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);
});
};
Comment est set(this, on)
travaille ici? Il semble fonctionner sur la liste des éléments, mais quelque chose doit arriver à chaque élément, et je ne vois pas ce qui pourrait provoquer une itération. Je l'aurais prévu quelque chose de plus comme le on === undefined
cas, quelque chose comme:
this.each (function(i, element) {
set($(element), on);
)}
Alors, suis-je manque quelque chose?
Je suis coupable de ne pas lire le code aussi près que je devrais, j'ai supprimé ma réponse. Je dirais maintenant que vous n'avez pas fourni assez d'informations. Comment savez-vous que cet ensemble est appliqué à une liste d'éléments? Pour que je puisse suivre ce qui se passe, je devrais voir comment toggleAttr est appliqué. – mikerobi
Je sais que parce que 'toggleAttr' est défini comme une méthode de jQuery.fn (j'espère que la terminologie est correcte, je suis un développeur C++, nouveau dans jQuery). Cela sera appelé dans un contexte comme: 'jQuery ('ul # liste de li li'). ToggleAttr (" pertinent ", vrai, faux, vrai);' ou 'jQuery ('# workers li'). ToggleAttr ("on-shift", true, false); ' –