2012-01-29 36 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