2012-06-04 2 views
0

Я создал анимацию, которая основана на следующих функциях jQuery: hide(), show(), animate().Оптимизация анимации на основе JQuery с помощью результата селектора кеширования?

Эта анимация потребляет много CPU (как использование процессора как процессора), Chrome сообщает мне, что (через инструмент профилирования селектора CSS), что у меня есть много похожих селекторов CSS (профиль селектора CSS).

Являются ли эти селекторы теми, которые используются только механизмом рендеринга? Включает ли это также поиск узла jQuery при использовании $() (предположил, что он вызывается hide(), show() или animate())?

Если да, то второй вопрос, как я могу переопределить эту функцию для кэширования некоторого узла? (путем жесткого кодирования нескольких селекторов, результат которых не изменится в моих анимационных логиках).

EDIT: Я осуществляет переход между кадрами, каждый кадр как эффект Кена Бернса на его фоне

EDIT2: вот плагин JQuery, который с помощью CSS3 для анимации, когда это возможно https://github.com/benbarnett/jQuery-Animate-Enhanced

+1

Если вы беспокоитесь о производительности, я думаю, вы должны принять во внимание идею использовать CSS3 переходы/анимацию для достижения некоторых эффектов, так сделайте работу GPU вместо CPU – fcalderan

+1

. Более важным является назначение селектора переменной и использование переменной вместо повторного запуска селектора. Отображение вашего кода поможет немного определить некоторые возможности оптимизации. –

+0

@ F.Calderan +1 Я не знал, что CSS3 использует графический процессор, что хорошо знать. Я собираюсь попробовать этот подход, но для сложной анимации это может быть невозможно. – AsTeR

ответ

0

Если вы делать много JQuery анимации с помощью кода, как следующее:

$('div.myclass').show(); 
... 
$('div.myclass').hide(); 
.... 
$('div.myclass').toggle(); 

Вы можете посмотреть на выстроив цепочку Jquery выбор:

$('div.myclass').show().addClass('sdf').children('li').slideToggle() 

или назначая селектор переменного и повторно использовать этот переменную

var $ele = $('div.myclass'); 
$ele.show(); 
... 
$ele.hide(); 
.... 
$ele.toggle(); 
+0

Как уже упоминалось в комментариях, я уже забочусь о таких вещах. – AsTeR

Смежные вопросы