2012-01-29 21 views
20

我正在寻找一种方法来结合jQuery变量。回顾相关问题,似乎没有人试图做我想做的事情。结合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>有“水果”,另一个有“蔬菜”,我可以把它们都放入一个名为“PRODUCE”的jQuery变量。然后,如果我需要在两者上执行任何操作,则可以使用农产品。

......虽然这可能只是一种愚蠢的做事方式。

+0

Whhy你不使用'$(“选择”)'因为你的元素都是选择? – Mike 2012-01-29 20:56:01

+1

这可能只是一种愚蠢的做事方式,确实...... ** =)** – gdoron 2012-01-29 20:58:28

+0

我想挑选应该组合在一起的那些。我想这可以通过给他们所有的ID来完成,但是由于他们是以编程方式添加的,我宁愿添加它们而不使用任何属性。 – 2012-01-29 20:59:35

回答

42

也许您在寻找.add()

$mixed = $body.add($div).add($p); 
+0

你一定是在开玩笑吧。我已经找了这么久......我不认为它存在。 虽然我从来没有想过要找“添加”这个词。 (“Combine”甚至没有在页面上找到,fml) – 2012-01-29 20:56:06

+0

@ RadGH - 如果它是正确的,一定要接受这个答案;)。 – 2012-01-29 20:58:49

+0

10分钟等待计时器! – 2012-01-29 21:00:32

0

我也在寻找类似的东西。在我的情况下,我有一些对象传递到一个公共的功能,一些创建在内存中,我想要应用相同的点击事件到所有的对象。最后,我采用了詹姆斯的上面的解决方案,但认为我会分享另一种选择。

如果将对象放入数组中,则可以使用每个迭代器对它们执行操作。

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

这句法较长,你没有得到一个可重用的$混合对象,但是可能会有一些场景中,这是有用的。

2

对我来说,在jQuery的1.10.2正常工作简单的文字传递到jQuery的构造函数之前结合数组中的元素:$mixed = $([$body, $div, $p]);

+0

对我而言不起作用。版本1.11 – Boykodev 2016-08-15 06:53:54