Как сохранить несколько селекторов jQuery в переменной javascript? - PullRequest
1 голос
/ 27 января 2011

Очевидно, что лучше хранить селекторы jQuery в переменных, если они используются более одного раза ( не хорошая идея, если используется только один раз).

Мой вопрос: как вы храните несколько переменных, которые взаимозаменяемо используются, в переменной.

Например, допустим, я выбрал $('#object1, #object2), а затем выбрал `$ ('# object1'). Как бы я создал переменную, которая может быть объединена с другими переменными для создания нескольких селекторов.

Если бы я написал это так:

var object1 = "#object1";
var object2 = "#object2";

$(object1  + "," + object2);

Я буду ссылаться только на строку #object1, а не на фактический селектор.

Итак, как мне хранить несколько селекторов в переменных, чтобы их можно было использовать взаимозаменяемо?

Ответы [ 5 ]

8 голосов
/ 27 января 2011

Проблема не в selector string, а в запросе элемента DOM.«Проблема» означает, что это дорого.Вот почему вы должны только один раз запросить элемент и сохранить ссылку на него.

var object1 = $('#object1'),
    object2 = $('#object2');

object1.some_method();

update

В отношении вашего комментария:

jQuery предлагает метод .add() help , который позволяет объединять объекты jQuery:

object1.add(object2).method();
3 голосов
/ 27 января 2011

Не совсем уверен, что я понимаю, что вы имеете в виду. Вы хотите хранить объекты jQuery, чтобы вам не приходилось постоянно искать их, как какой-то кеш?

var cache = new Object();
cache['#object1'] = $('#object1');
cache['#object2'] = $('#object2');

Чтобы получить значения jQuery, вам просто нужно вызвать cache['#object1'].

1 голос
/ 27 января 2011

Вы можете использовать .add():

var object1 = $('#object1'), object2 = $('#object2');

object1.add(object2).addClass('couple');

Или

var multiple = [object1[0], object2[0], ...];

$(multiple).addClass('party');
0 голосов
/ 22 июля 2012

Почему бы вам не воспользоваться легким способом.

var severalVar = 'h1,h2,h3,h4,h5,h6';
 $(severalVar).hide()
0 голосов
/ 27 января 2011

селектор - это строка при передаче в $ () fn. возвращает коллекцию элементов, соответствующих селектору. Так что в этом коде нет ничего плохого.

Ваш код также может быть записан как,

var object1 = "#object1",
    object2 = "#object2";

$(object1).add(object2).doSomething();

или его можно дополнительно оптимизировать как

var object1 = $('#object1'),
    object2 = $('#object2');

object1.add(object2).doSomething();

, где doSomething может быть определенным плагином jQuery или jQuery методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...