Помогите сократить код
Доброго времени. Оптимизируя код, при кэшировании столкнулся с такой проблемой - не знаю, как навесить событие на несколько элементов..
Вот старый вариант:
$('#first, #second').on('click' ....);
Вот хочу теперь так:
var first = $('#first');
var second = $('#second');
// так не работает
$(first,second).on(...);
// и вот так тоже хочу, но не работает.
$(first, second, '.any_class').on(...);
Помогите с синтаксисом плиз, друзья! |
$(first,second) — это два аргумента. А нужен один.
Селектор — это одна строка. Если обязательно айдишники выносить в переменные, то так: $(first+","+second) |
нет, $(first+","+second) не работает..
$('#first, #second') - но так то можно ведь. |
А возможности присвоить всем элементам один класс нет?
А потом выбирать
$('.yourclass')
|
нет, это уже совсем другая тема. И сейчас разговор о скорости скрипта. Если я сделаю два элемента в разных концах страницы с одним классом, машина дольше будет искать, чем два элемента со строго прописанными путями.
|
first.add(second).on("событие", "и так далее")
|
elem = $('#elem');
$(elem, '.any_class').on(...);
А такое как бы записать? Сегодня только столкнулся, сделал через детей. |
Цитата:
$(elem).add('.any_class').on(...);
|
melky и walik - спасибо, интересное решение и работает. Ловите плюсы!
|
Цитата:
Ваш вариант сработал бы, если в переменных сохранять строки-селекторы, например, var first = '#first'; var second = '#second'; И еще, в функцию $() никто не обязывает передавать 1 аргумент, их может быть 2. Вторым аргументом можно передать контекст селектора. Подробнее тут |
| Часовой пояс GMT +3, время: 15:38. |