2013-07-21 4 views
1

Для моего вопроса мне нужно сначала написать css.jQuery hasClass vs hide

.hide { display: none; } 

Теперь, в jQuery, какой из приведенных ниже примеров будет быстрее?

if ($('#a').is(':hidden')) { 
    $('#a').show(); 
} else { 
    $('#a').hide(); 
} 

или

if ($('#a').hasClass('hide')) { 
    $('#a').removeClass('hide'); 
} else { 
    $('#a').addClass('hide'); 
} 
+1

Почему вы не сравниваете их на jsperf.com? Я также предлагаю вам попробовать '.toggle()' и '.toggleClass()', они, вероятно, быстрее, чем любой из них. – Barmar

+0

Не изменилось бы с точки зрения пользователя. Но, я бы сказал, 1-й будет быстрее, потому что все основано на селекторе ID. Во втором случае вы используете как идентификатор, так и класс. Идентификаторы намного быстрее, чем классы. – Learner

ответ

4

Манипуляции с классами быстрее, чем вызов функций show/hide.

Вот JSPerf: http://jsperf.com/hide-or-class

+0

Thats great! Я никогда не знал о jsperf. – cnotethegr8

+1

+1 и просто добавил другие фрагменты, чтобы убедиться: http://jsperf.com/hide-or-class/2 (похоже, сохранение локальной переменной - хорошая идея). – acdcjunior

0

Я думаю, вы можете попробовать этот код:

$('a').toggleClass('hide') 

Это делает то же самое, что ваши коды, но она меньше. Вы можете посмотреть на documentation of the toggleClass.

0

что сказал Лукас Уиллемс правильно. используйте toggleClass(), чтобы уменьшить ваш код, и он будет намного быстрее, чем при использовании методов hide() и show()