2012-06-22 44 views
1

我有一個循環.find()muliple班在一個聲明中具有可變

$(".box").find('.video, .print, .web').closest('.box').each(function (index) 
{ 
    $(this).delay(100 * index).fadeIn(300); 
}); 

此代碼的工作就好了。但是我將這3個類調用了很多,我想把它放到一個變量中。 EX:

var resetBoxClass = ".print .web .video"; 

$(".box").find('resetBoxClass').closest('.box').each(function (index) 
{ 
    $(this).delay(100 * index).fadeIn(300); 
}); 

要我辜負我不能得到這個工作...這只是愚蠢的語義?有人可以向我解釋爲什麼?

回答

7

逗號缺少resetBoxClass = ".print, .web, .video";&$(".box").find('resetBoxClass')應該$(".box").find(resetBoxClass)

這將幫助,

休息如下:

var resetBoxClass = ".print, .web, .video"; 

$(".box").find(resetBoxClass).closest('.box').each(function (index) 
{ 
    $(this).delay(100 * index).fadeIn(300); 
}); 
+0

@ + 1打我..犀利的眼睛......敬禮.. – thecodeparadox

0

嘗試不帶引號:

$(".box").find(resetBoxClass).etc(... 

用引號表示您沒有傳入變量,而是傳入字符串文字。

0

中的類之間的第一行添加逗號和鬆從find()

這裏的引號是代碼

var resetBoxClass = ".print, .web, .video"; 

$(".box").find(resetBoxClass).closest('.box').each(function (index) 
{ 
    $(this).delay(100 * index).fadeIn(300); 
}); 
0

你應該需要緩存你的元素,而不是類來執行你的快速代碼:

var yourTarget = $(".box").find('.video, .print, .web').closest('.box'); 

yourTarget.each(function (index) 
{ 
    $(this).delay(100 * index).fadeIn(300); 
}); 

由於您的元素已被緩存,因此上面的代碼將執行得更快。

0

@Tats_innit回答了你的實際問題,所以我不會重複這一點。

這是一個稍微笨拙的構造:

$(".box").find(".video, .print, .web").closest(".box") 

// or 

$(".box").find(resetBoxClass).closest(".box") 

你應該能夠做到這一點,而不是:

$(".box").has(".video, .print, .web") 

// or 

$(".box").has(resetBoxClass) 

但我很多調用這些3班,我想把它變成一個變量。

你的意思是你也在你的代碼的其他部分使用該選擇器(沒有在問題中顯示),對吧?對於您的問題中的代碼片段,使用文字或變量將選擇器傳遞給find()無關緊要。如果您在代碼的其他部分使用相同的選擇器,則使用變量將會非常有用。我只是提到這個問題,因爲你錯誤地認爲使用each()循環意味着你「在調用這3個類別」。

相關問題