2016-03-05 206 views
0

這裏是一個完美的作品

$('.picture').each(function(index) { 
    hideYourself(index); 
}); 

但是代碼,當我嘗試

$('.picture').each(hideYourself(index)); 

它不'運行隱藏你自己。我以爲這可能是因爲我沒有定義index,但是當我將它傳遞給一個匿名函數時,我沒有定義它。整個程序的CodePen

我知道這可能是一個愚蠢的事情要擔心,但我只是混淆了爲什麼通過.each一個命名的函數失敗,但傳遞給它一個匿名函數調用我命名的函數它的工作原理。

回答

3

用途:

$('.picture').each(hideYourself); 
+0

哇。這很簡單。在11分鐘內我會接受你的答案!你能解釋爲什麼這樣或者知道一個好的資源,我可以讀到它爲什麼是這樣嗎? –

+1

http://api.jquery.com/jquery.each/當您將'hideYourself'函數作爲'each'方法的參數傳遞時,它在調用時已經將索引作爲第一個參數。 –

+0

謝謝!我現在可以最終使用我的功能,而無需使用匿名函數來調用它們! –

2

因爲每取一個參數的功能參數,但你實際使用hideYourSelf(index)調用函數調用它的函數,並返回函數的返回值作爲參數傳遞給每一個。

可以實現它:

$('.picture').each(hideYourself); 

或另一種方式來達到同樣的行爲是:

$('.picture').each(hideYourself()); 

function hideYourself(){ 
    return function(index){ 
    //hide here 
    } 
} 

第一種方法是簡單,更好。