Производительность jQuery, .css или addClass - PullRequest
17 голосов
/ 25 февраля 2010

У меня большой код jQuery, и я думаю о быстродействии моих функций. Когда элемент нажимается (mousedown), мне нужно назначить изображение в качестве фона. Я могу сделать это двумя способами:

$('#element li.class').css({"background":"someimageURL"});

или

$('#element li.class').addClass("someclass");

где у someclass есть фактическое фоновое изображение CSS. Функция ведьмы работает лучше в этом случае.

Есть ли способ проверить скорость различных функций?

Спасибо

Ответы [ 2 ]

16 голосов
/ 25 февраля 2010

Я почти уверен, что .addClass() будет быстрее обоих. Это предполагает, по существу, привязку к элементу другого имени класса, в то время как альтернатива потребует перебора стилей элементов и установки множества явных правил.

Установка пары правил css с помощью $.css(), вероятно, не о чем беспокоиться, но если вы часто устанавливаете многие из них, самое время создать класс и применить / удалить его при необходимости.

Я извлек логику обоих методов в одно место, чтобы вы могли просмотреть его, если хотите.

http://pastie.org/842738

10 голосов
/ 16 января 2014

Добавить класс абсолютно быстрее, см. Этот тест производительности $.addClass() против $.css() против $.removeClass().addClass() против простого js - http://jsperf.com/jquery-css-vs-addclass-speed/2

...