让我们从简单的开始,给你做你想做的代码:
function showimage(b)
{
//if alert was here, it would show the value of b
$("#lightboxholder").show("fast","",function ()
{
alert(b); // interestingly enough, it knows what b is here
});
}
从那里出现了两个主要问题:为什么你正在尝试的东西不起作用,为什么我正在做的东西起作用。让我们从你正在做的事情开始。
您正在尝试将参数传递给函数,就好像您正在调用匿名函数一样。但是,您没有调用该函数。您正在定义函数并将函数本身作为参数提供给 jQuery。jQuery 然后在它希望的位置调用你定义的函数。因为它需要在那个时候提供价值而不是,所以你不会得到你想要达到的结果。因此,您不能以您尝试的方式传递参数。
然后让我们继续讨论为什么我的版本可以工作。这就是javascript中所谓的封装。基本上,如果您定义一个函数,您可以使用在定义该函数的上下文中可用的任何变量。然后,Javascript 会自动确保只有您使用的那些包含在您定义的函数的上下文中。这完全独立于您调用函数的位置,仅依赖于您定义函数的位置。因此,我只是从 showImage 函数中“借用” b 值并在匿名函数中使用。