2016-03-05 66 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 
    } 
} 

第一种方法是简单,更好。