Объединить переменные JQuery в один селектор? - PullRequest
21 голосов
/ 30 января 2012

Я ищу способ объединения переменных jquery. Просматривая связанные вопросы, кажется, никто не пытается сделать то, что я хочу сделать.

$("body, div, p") - это один метод объединения с помощью селекторов, но после того, как вы назначаете селектор переменной, как вы комбинируете их подобным образом?

Вот один из способов, который я пробовал, но он не заработал. Я также попытался поместить их в массив (просто добавив скобки перед $ body и после $ p).

$body = $("body");
$div = $("div");
$p = $("p");
$mixed = $($body, $div, $p);
// $mixed = $("body, div, p"); is NOT what I am looking for

В моем реальном скрипте у меня есть <select> входные данные, назначенные переменным. Я хотел бы поместить их в группы, скажем, у меня есть <select> с «ФРУКТАМИ» и еще один с «ОВОЩАМИ», я мог бы поместить их оба в переменную jquery с именем «ПРОДУКТ». Тогда, если мне нужно что-то сделать на обоих из них, я использую вместо этого продукты.

... Хотя это может быть просто глупым способом сделать что-то.

Ответы [ 3 ]

43 голосов
/ 30 января 2012

Возможно, вы ищете .add () ?

$mixed = $body.add($div).add($p);
2 голосов
/ 22 января 2014

Для меня это прекрасно работает в jQuery 1.10.2, чтобы просто объединить элементы в литерале массива перед передачей в конструктор jQuery: $mixed = $([$body, $div, $p]);

0 голосов
/ 23 ноября 2012

Я тоже искал что-то подобное. В моем случае некоторые объекты были переданы в общую функцию, а некоторые созданы в памяти, и я хотел применить одно и то же событие щелчка ко всем объектам. В конце я решил добавить решение Джеймса выше, но решил поделиться другим вариантом.

Если вы помещаете объекты в массив, вы можете использовать каждый итератор для выполнения над ними действия.

[$body, $div, $p].each(function(i,e) { e.DoSomething(); });

Этот синтаксис длиннее, и вы не можете получить многократно используемый объект $ mixed, но в некоторых случаях это может быть полезно.

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