JQuery, как использовать несколько кешированных элементов
Для моего проекта я использую кешированные селектора для ускорения и улучшения:
(чтобы уменьшить поиск внутри документа)
var sel1 = $('#selector1');
var sel2 = $('#selector2');
как я могу использовать кешированные селектора в этой ситуации? для ex:
$('#selector1, #selector2').fadeTo(300, 1, 'linear');
Это просто отполировать мой код
Ty:)
Ответы
Ответ 1
Вы можете использовать .add()
для "Добавить элементы в набор согласованных элементов":
sel1.add(sel2).fadeTo(300, 1, 'linear');
Документы для .add()
: http://api.jquery.com/add
.add()
может принимать:
- селектор
- Элементы DOM
- Объекты jQuery
- и селекторов с контекстом (
$('<selector>', <context>)
)
Вы также можете передать массив элементов DOM в jQuery:
var one = $('#one')[0],
two = $('#two')[0];
$([one, two]).fadeTo(300, 1, 'linear');
Вот демо: http://jsfiddle.net/3xJzE/
UPDATE
Я создал jsperf из трех разных методов, которые в настоящее время отвечают: http://jsperf.com/jquery-fadeto-once-vs-twice (похоже, использование селектора массивов - это самый быстрый: $([one, two]).fadeTo...
)
Ответ 2
jQuery add
sel1.add(sel2).fadeTo(300, 1, 'linear');
Ответ 3
Вы можете использовать .add()
для этого;
sel1.add(sel2).fadeTo(300, 1, 'linear');
Хорошо, если вы добавите префикс $
при именовании переменных. Таким образом, вы можете отличить их от стандартных javascript-объектов. Так что это лучше:
var $sel1 = $('#selector1');
var $sel2 = $('#selector2');
$sel1.add($sel2).fadeTo(300, 1, 'linear');
Ответ 4
Если у вас уже есть сохраненные селектора, просто примените fadeTo к каждому в отдельности. JQuery просто придется разбирать селектор в любом случае...
sel1.fadeTo(300, 1, 'linear');
sel2.fadeTo(300, 1, 'linear');
Ответ 5
Попробуйте это
sel1.add(sel2).fadeTo(300, 1, 'linear');