Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите сократить код (https://javascript.ru/forum/jquery/31414-pomogite-sokratit-kod.html)

shaltay 06.09.2012 18:59

Помогите сократить код
 
Доброго времени. Оптимизируя код, при кэшировании столкнулся с такой проблемой - не знаю, как навесить событие на несколько элементов..

Вот старый вариант:
$('#first, #second').on('click' ....);


Вот хочу теперь так:

var first = $('#first');
var second = $('#second');

// так не работает
$(first,second).on(...);

// и вот так тоже хочу, но не работает.
$(first, second, '.any_class').on(...);


Помогите с синтаксисом плиз, друзья!

LittlePony 06.09.2012 19:15

$(first,second) — это два аргумента. А нужен один.
Селектор — это одна строка.
Если обязательно айдишники выносить в переменные, то так:
$(first+","+second)

shaltay 06.09.2012 19:38

нет, $(first+","+second) не работает..

$('#first, #second') - но так то можно ведь.

frutality 06.09.2012 19:44

А возможности присвоить всем элементам один класс нет?
А потом выбирать
$('.yourclass')

shaltay 06.09.2012 20:02

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

melky 06.09.2012 20:14

first.add(second).on("событие", "и так далее")

Serg_pnz 06.09.2012 20:17

elem = $('#elem');
$(elem, '.any_class').on(...);

А такое как бы записать? Сегодня только столкнулся, сделал через детей.

walik 06.09.2012 20:30

Цитата:

Сообщение от Serg_pnz
А такое как бы записать?

$(elem).add('.any_class').on(...);

shaltay 06.09.2012 20:36

melky и walik - спасибо, интересное решение и работает. Ловите плюсы!

yura_remnev 06.09.2012 22:12

Цитата:

Сообщение от LittlePony (Сообщение 203380)
$(first,second) — это два аргумента. А нужен один.
Селектор — это одна строка.
Если обязательно айдишники выносить в переменные, то так:
$(first+","+second)

Ошибка в том, что Вы предлагаете склеить 2 ссылки на объекты как строки :)

Ваш вариант сработал бы, если в переменных сохранять строки-селекторы, например,
var first = '#first';
var second = '#second';


И еще, в функцию $() никто не обязывает передавать 1 аргумент, их может быть 2. Вторым аргументом можно передать контекст селектора. Подробнее тут


Часовой пояс GMT +3, время: 06:18.