Cet article analyse plus en détail la méthode removeAttr() d'interprétation du code source jQuery. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Méthodes qui étendent l'objet prototype jQuery :
//Utilisez l'objet jQuery.fn, c'est-à-dire chaque méthode de l'objet prototype jQuery pour parcourir le tableau d'objets jQuery sélectionné par le sélecteur actuel et renvoyer l'objet jQuery pour l'appel en chaîne.
renvoie this.each(function() {
//Appelez la méthode globale de jQuery removeAttr, en passant ceci dans l'objet DOM parcouru ainsi que le nom de l'attribut à supprimer.
jQuery.removeAttr( ceci, nom);
});
>
});
Méthode globale de jQuery RemoveAttr
//elem est chaque objet DOM traversé et value est le nom de l'attribut à supprimer.
RemoveAttr : fonction (élément, valeur) {
nom de la variable, nom_prop,
i = 0,
//rnotwhite est (/S /g)
//Si la valeur est " ", la valeur de l'expression ET logique est nulle
//Si la valeur est supposée être "title href", puisqu'aucun des opérandes de l'opérateur logique AND n'est une valeur booléenne, le deuxième opérande sera renvoyé à ce moment-là, attrNames est ["title", "href"].
//match est une méthode de chaîne JavaScript qui récupère une valeur spécifiée dans une chaîne ou trouve une correspondance pour une ou plusieurs expressions régulières et renvoie un tableau stockant les résultats correspondants. D'autres types signaleront des erreurs.
attrNames = value && value.match( rnotwhite );
//Si attrNames n'est pas nul et que le type de nœud de l'objet DOM actuel est 1, entrez le bloc d'instruction if, sinon quittez la fonction, terminez ce parcours et démarrez le parcours suivant.
Si ( attrNames && elem.nodeType === 1 ) {
//À l'heure actuelle, attrNames est un tableau contenant les noms d'attributs à supprimer, c'est-à-dire ["title", "href"]
//Exécutez la boucle while. Cette façon d'écrire signifie, retirez d'abord un élément de attrNames et attribuez-le à name, j'augmenterai de 1, puis déterminerez si name a une valeur. S'il y a une valeur, entrez dans la boucle. exécution. Une fois l'exécution terminée, la boucle suivante commencera jusqu'à ce que le nom n'ait plus de valeur, sortez de la boucle.
while ( (nom = attrNames[i ]) ) {
//Si le nom de l'attribut a le même nom que le mot-clé js tel que "for" et "class", remplacez-le par "htmlFor" et "className".
propName = jQuery.propFix[ nom ] ||
Si ( jQuery.expr.match.bool.test( nom ) ) {
//getSetInput détecte si l'élément Input prend en charge getAttribute("value")
//getSetAttribute détecte si la définition du nom de l'attribut au format de dénomination camel est prise en charge
//!ruseDefault.test( name ) ne respecte pas la casse et détecte si le nom est un attribut coché ou sélectionné,
Si ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
//Supprimer l'attribut booléen revient en fait à attribuer la valeur false
à l'attribut booléen
à
} autre {
//Supporte ie9 et versions antérieures
//Convertissez l'attribut "default-checked" en "defaultChecked" et attribuez la valeur false
elem[ jQuery.camelCase( "nom par défaut" ) ] =
}
} autre {
// S'il ne s'agit pas d'un attribut booléen, appelez la méthode attr globale de jQuery pour définir l'attribut
jQuery.attr(elem, nom, "");
}
//getSetAttribute est utilisé pour tester si setAttribute prend en charge la définition des noms d'attribut au format de dénomination en casse chameau. Si tel est le cas, vous devez utiliser le nom d'attribut corrigé lorsque vous utilisez setAttribute et getAttribute. (Compatible avec ie6/7)
//Si getSetAttibute est égal à false, cela signifie qu'il n'est pas pris en charge et que le nom de l'attribut modifié est utilisé. S'il est pris en charge, le nom de l'attribut d'origine est utilisé.
//Appelez la méthode native RemoveAttribute du DOM pour supprimer l'attribut
elem.removeAttribute( getSetAttribute ? name : propName );
}
>
>
});
Correction des attributs de mots clés
检测input是否支持getAttribute("value")
检测是否布尔值属性
matchExpr = {
"bool": new RegExp( "^(?:" booléens ")$", "i" )
},
希望本文所述对大家的jQuery程序设计有所帮助。