Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.09.2012, 18:59
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

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

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


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

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

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

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


Помогите с синтаксисом плиз, друзья!
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2012, 19:15
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

$(first,second) — это два аргумента. А нужен один.
Селектор — это одна строка.
Если обязательно айдишники выносить в переменные, то так:
$(first+","+second)
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2012, 19:38
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

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

$('#first, #second') - но так то можно ведь.
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2012, 19:44
Интересующийся
Отправить личное сообщение для frutality Посмотреть профиль Найти все сообщения от frutality
 
Регистрация: 30.08.2012
Сообщений: 26

А возможности присвоить всем элементам один класс нет?
А потом выбирать
$('.yourclass')
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2012, 20:02
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

нет, это уже совсем другая тема. И сейчас разговор о скорости скрипта. Если я сделаю два элемента в разных концах страницы с одним классом, машина дольше будет искать, чем два элемента со строго прописанными путями.
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2012, 20:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

first.add(second).on("событие", "и так далее")
Ответить с цитированием
  #7 (permalink)  
Старый 06.09.2012, 20:17
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

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

А такое как бы записать? Сегодня только столкнулся, сделал через детей.
Ответить с цитированием
  #8 (permalink)  
Старый 06.09.2012, 20:30
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от Serg_pnz
А такое как бы записать?
$(elem).add('.any_class').on(...);
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2012, 20:36
Кандидат Javascript-наук
Отправить личное сообщение для shaltay Посмотреть профиль Найти все сообщения от shaltay
 
Регистрация: 28.02.2011
Сообщений: 134

melky и walik - спасибо, интересное решение и работает. Ловите плюсы!
Ответить с цитированием
  #10 (permalink)  
Старый 06.09.2012, 22:12
Интересующийся
Отправить личное сообщение для yura_remnev Посмотреть профиль Найти все сообщения от yura_remnev
 
Регистрация: 01.07.2011
Сообщений: 9

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

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


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сократить код. Eldrich Элементы интерфейса 5 19.09.2011 13:40
Выпадающие списки. Помогите подправить код. cardsmoney Элементы интерфейса 6 18.02.2011 16:20
Помогите сократить код Diego Общие вопросы Javascript 4 14.02.2011 20:01
Код калькулятора на JS. помогите с ошибкой! kirill.psl Общие вопросы Javascript 9 26.08.2010 11:38
Помогите код оптимизировать. Suharik Events/DOM/Window 2 27.05.2010 11:59