apakah ada metode yang disukai untuk menentukan apakah suatu elemen diberi kelas, dari sudut pandang kinerja?
$('#foo').hasClass('bar');
atau
$('#foo').is('.bar');
apakah ada metode yang disukai untuk menentukan apakah suatu elemen diberi kelas, dari sudut pandang kinerja?
$('#foo').hasClass('bar');
atau
$('#foo').is('.bar');
Jawaban:
Saya melakukan tes setelah komentar dan empat suara positif untuk komentar. Ternyata apa yang saya katakan adalah jawaban yang benar. Inilah hasilnya:

http://jsperf.com/hasclass-vs-is-so
Ini ismulti-tujuan, Anda dapat misalnya melakukan is('.class'),, is(':checked')dll yang berarti ismemiliki lebih banyak hal yang harus dilakukan di mana hasClassterbatas yang hanya memeriksa kelas yang disetel atau tidak.
Karenanya, hasClassharus lebih cepat jika kinerja di level mana pun adalah prioritas Anda.
hasClass adalah jauh lebih cepat.
Karena islebih umum daripada hasClassdan digunakan filteruntuk memproses ekspresi yang disediakan, sepertinya itu hasClasslebih cepat.
Saya menjalankan kode berikut dari konsol Firebug:
function usingIs() {
for (var i=0; i<10000;i++) {
$('div#example-0').is('.test');
}
}
function usingHas(){
for (var i=0; i<10000;i++) {
$('div#example-0').hasClass('test');
}
}
usingIs();
usingHas();
Saya mendapatkan:
Bukan perbedaan yang besar, tetapi mungkin relevan jika Anda melakukan banyak pengujian.
EDIT ketika saya mengatakan 'bukan perbedaan besar, maksud saya adalah Anda perlu melakukan 10.000 siklus untuk melihat 0,8 perbedaan. Saya akan terkejut melihat aplikasi web yang beralih dari iske hasClassakan melihat peningkatan yang signifikan di semua kinerja. Namun, saya akui bahwa ini adalah peningkatan kecepatan 35%.
Keduanya harus cukup dekat dalam hal kinerja tetapi $('#foo').hasClass('bar');tampaknya lebih mudah dibaca dan secara semantik benar bagi saya.