在jQuery中到达变量

时间:2010-11-30 22:19:36

标签: javascript jquery closures hover

我有这样的代码:

<script type="text/javascript">
    var currentPicture;//default picture
    var picEL;//the image viewer element
    jQuery("#backImageShower").hover(
        function(i)
        {
            picEL = jQuery("#dynloadarxdock > img");
            currentPicture = picEL.attr("src");
            picEl.attr("src","back.jpg");
        },
        function()
        {
            picEl.attr("src",currentPicture);
        }
    );
</script>

但是当我运行此代码时,它表示picEl未定义。我认为这可能是因为闭包,但这段代码完美运行:

<script type="text/javascript">
    var currentPicture;//default picture
    jQuery("#backImageShower").hover(
        function(i)
        {
            currentPicture = jQuery("#dynloadarxdock > img").attr("src");
            jQuery("#dynloadarxdock > img").attr("src","back.jpg");
        },
        function()
        {
            jQuery("#dynloadarxdock > img").attr("src",currentPicture);
        }
    );
</script>

但是这段代码也包含全局变量并且有效。

有人可以告诉我为什么吗?

感谢。

3 个答案:

答案 0 :(得分:7)

问题是你正在混合外壳。该变量声明为picEL,但有时用作picEl(小写'l',这是您的错误所在的位置)。

答案 1 :(得分:0)

您正在使用picEl而不是图片。

 picEl.attr("src",currentPicture);

应该是:

 picEL.attr("src",currentPicture);

答案 2 :(得分:0)

除了第二个悬停功能外,你在任何地方都使用picEL - picEl。