Maison > interface Web > js tutoriel > Analyse de la méthode RemoveAttr() du code source jQuery Interpretation_jquery

Analyse de la méthode RemoveAttr() du code source jQuery Interpretation_jquery

WBOY
Libérer: 2016-05-16 16:13:31
original
1288 Les gens l'ont consulté

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 :

Copier le code Le code est le suivant :
jQuery.fn.extend({
//name, transmet le nom de l'attribut de l'élément DOM à supprimer.
​ RemoveAttr : fonction (nom) {

//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

Copier le code Le code est le suivant :
//Extendre la méthode globale de l'objet jQuery
jQuery.extend({

//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 ] ||

//S'il s'agit d'un attribut booléen, traitement particulier

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



Copier le code Le code est le suivant :
jQuery.extend({
    propFix : {
        "pour": "htmlPour",
        "class": "nom de classe"
    >
});
jQuery.extend({
    camelCase : fonction (chaîne) {
        return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
    >
});
var nodeHook, boolHook,
    attrHandle = jQuery.expr.attrHandle,
    ruseDefault = /^(?:checked|selected)$/i,
    getSetAttribute = support.getSetAttribute,
    getSetInput = support.input;
// Configuration
div = document.createElement( "div" );
div.setAttribute( "className", "t" );
div.innerHTML = " 
a";
a = div.getElementsByTagName("a")[ 0 ];
// Premier lot de tests.
select = document.createElement("select");
opt = select.appendChild( document.createElement("option") );
input = div.getElementsByTagName("input")[ 0 ];
a.style.cssText = "top:1px";
// Test setAttribute sur la classe camelCase. Si cela fonctionne, nous avons besoin d'attrFixes lors de l'exécution de get/setAttribute (ie6/7)
support.getSetAttribute = div.className !== "t";

检测input是否支持getAttribute("value")

复制代码 代码如下 :
// Prise en charge : IE8 uniquement
// Vérifiez si nous pouvons faire confiance à getAttribute("value")
input = document.createElement( "input" );
input.setAttribute( "value", "" );
support.input = input.getAttribute( "value" ) === "";

检测是否布尔值属性

复制代码 代码如下 :
booleans = "checked|selected|async|autofocus|autoplay|controls| différer|désactivé|caché|ismap|loop|multiple|open|readonly|obligatoire|scoped",

matchExpr = {
    "bool": new RegExp( "^(?:" booléens ")$", "i" )
},

希望本文所述对大家的jQuery程序设计有所帮助。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal