无法将值传递给jquery函数

时间:2012-10-23 16:42:47

标签: javascript jquery

当我想传递价值时,它没有奏效。 这是我的代码,

function showimage(b)
{
    //if alert was here, it would show the value of b
    $("#lightboxholder").show("fast","",function (b)
    {
        alert(b);//but now when the alert is here, it is not showing the value of b
    });
}
我错过了一些男人吗?提前谢谢!

4 个答案:

答案 0 :(得分:2)

将使用新参数调用内部函数,因此b将替换为新变量。

如果您将function (b)替换为function () - 那么内部b应该是赋予外部函数的内容。

答案 1 :(得分:1)

这是因为函数中b的本地值覆盖了showImage函数中b的值。

答案 2 :(得分:0)

试试这个,

<强> Live Demo

function showimage(b)
{
    //if alert was here, it would show the value of b
    $("#lightboxholder").show("fast", function ()
    {
        alert(b);//but now when the alert is here, it is not showing the value of b
    });
}

答案 3 :(得分:0)

让我们从简单开始,为您提供满足您需求的代码:

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值并在匿名函数中使用。