Rumah >hujung hadapan web >tutorial js >Analisis kaedah removeAttr() kod sumber jQuery interpretation_jquery
Artikel ini menganalisis kaedah removeAttr() tafsiran kod sumber jQuery dengan lebih terperinci. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
Kaedah yang memanjangkan objek prototaip jQuery:
//Gunakan objek jQuery.fn, iaitu setiap kaedah objek prototaip jQuery untuk melintasi tatasusunan objek jQuery yang dipilih oleh pemilih semasa dan mengembalikan objek jQuery untuk panggilan berantai.
kembalikan ini.setiap(fungsi() {
//Panggil kaedah global jQuery removeAttr, masukkan objek DOM yang dilalui ini dan nama atribut yang akan dialih keluar.
jQuery.removeAttr( ini, nama );
});
}
});
kaedah global jQuery removeAttr
//elem ialah setiap objek DOM yang dilalui dan nilai ialah nama atribut yang akan dialih keluar.
RemoveAttr: function(elem, value) {
nama var, propName,
i = 0,
//rnotwhite ialah (/S /g)
//Jika nilai ialah " ", nilai bagi ungkapan logik DAN adalah batal
//Jika nilai diandaikan sebagai "href tajuk", kerana kedua-dua operan logikal DAN bukan nilai Boolean, operan kedua akan dikembalikan Pada masa ini, attrNames ialah ["title", "href"].
//match ialah kaedah rentetan JavaScript yang mendapatkan semula nilai yang ditentukan dalam rentetan, atau mencari padanan untuk satu atau lebih ungkapan biasa dan mengembalikan tatasusunan yang menyimpan hasil yang sepadan. Jenis lain akan melaporkan ralat.
attrNames = value && value.match( rnotwhite );
//Jika attrNames bukan nol dan jenis nod bagi objek DOM semasa ialah 1, masukkan blok pernyataan if, jika tidak, lompat keluar dari fungsi, tamatkan traversal ini dan mulakan traversal seterusnya.
Jika ( attrNames && elem.nodeType === 1 ) {
//Pada masa ini attrNames ialah tatasusunan yang mengandungi nama atribut yang akan dialih keluar, iaitu, ["title", "href"]
// Laksanakan gelung while ini bermakna, mula-mula keluarkan elemen daripada attrNames dan tetapkan ia kepada nama, saya akan meningkat sebanyak 1, dan kemudian tentukan sama ada nama mempunyai nilai Jika ada nilai, masukkan gelung perlaksanaan Selepas pelaksanaan selesai, gelung seterusnya akan bermula Sehingga nama tidak mempunyai nilai, keluar dari gelung.
manakala ( (nama = attrNames[i ]) ) {
//Jika nama atribut mempunyai nama yang sama dengan kata kunci js seperti "for" dan "class", gantikannya dengan "htmlFor" dan "className".
propName = jQuery.propFix[ name ] || name;
//Layanan istimewa jika ia adalah atribut Boolean
Jika ( jQuery.expr.match.bool.test( nama ) ) {
//getSetInput mengesan sama ada elemen Input menyokong getAttribute("value")
//getSetAttribute mengesan sama ada menetapkan nama atribut dalam format penamaan kes unta disokong
//!ruseDefault.test(name) tidak peka huruf besar dan mengesan sama ada nama ialah atribut yang disemak atau dipilih,
Jika ( getSetInput && getSetAttribute || !ruseDefault.test( nama ) ) {
//Mengalih keluar atribut Boolean sebenarnya memberikan nilai kepada false
kepada atribut Boolean
elem[ propName ] = palsu;
} lain {
//Sokongan ie9 dan ke bawah
//Tukar atribut "default-checked" kepada "defaultChecked" dan tetapkan nilai false
elem[ jQuery.camelCase( "nama lalai-" ) ] =
}
} lain {
//Jika ia bukan atribut Boolean, panggil kaedah attr global jQuery untuk menetapkan atribut
jQuery.attr(elem, nama, "");
}
//getSetAttribute digunakan untuk menguji sama ada setAttribute menyokong penetapan nama atribut dalam format penamaan kes unta Jika ya, anda perlu menggunakan nama atribut yang diperbetulkan apabila menggunakan setAttribute dan getAttribute. (Serasi dengan ie6/7)
//Jika getSetAttibute sama dengan palsu, ini bermakna ia tidak disokong dan nama atribut yang diubah suai digunakan Jika ia disokong, nama atribut asal digunakan.
//Panggil kaedah removeAttribute asli DOM untuk mengalih keluar atribut
elem.removeAttribute( getSetAttribute ? name : propName );
}
}
}
});
Sie können den Input-Wert eingeben und getAttribute("value")
verwenden检测是否布尔值属性
matchExpr = {
„bool“: new RegExp( „^(?:“ booleans „)$“, „i“ )
},
Sie haben die jQuery-Version mit jQuery erstellt.