Помогите сократить код
Доброго времени. Оптимизируя код, при кэшировании столкнулся с такой проблемой - не знаю, как навесить событие на несколько элементов..
Вот старый вариант: $('#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, время: 06:18. |