从函数内部引用存储返回的jQuery对象的全局变量

时间:2011-05-20 01:00:07

标签: jquery scope

好的,我知道这里有一些简单的东西,我缺少,所有我想要的是存储从jQuery查询返回的对象,如

var obj = $(“#objectID”);

作为全局vand,然后从函数中引用它。

以下示例提供了狗的图片,但随后使用jQuery交换图像的src属性以显示猫。我错过了什么?

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>
    <head>
    <!-- jquery -->
    <script src="jquery-1.6.1.min.js" type="text/javascript" language="javascript"></script>
    <!-- image swap -->
    <script type="text/javascript" language="javascript">

    // a global jQuery object
    var globalMainImage = $("#mainImage");
    // a global integer
    var globalInteger = 420;

    $(document).ready(function() {
        /* this works
        $("#mainImage").hide();
        $("#mainImage").attr("src", "http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Youngkitten.JPG/800px-Youngkitten.JPG");
        $("#mainImage").fadeIn(1500); 
        */

        /* and this works
        var localMainImage = $("#mainImage");
        localMainImage.hide();
        localMainImage.attr("src", "http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Youngkitten.JPG/800px-Youngkitten.JPG");
        localMainImage.fadeIn(1500); 
        */

        /* and this works
        alert(globalInteger);
        */

        /* but this doesn't */
        globalMainImage.hide();
        globalMainImage.attr("src", "http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Youngkitten.JPG/800px-Youngkitten.JPG");
        globalMainImage.fadeIn(1500);
    });
    </script>

    </head>
<body>
    <img id="mainImage" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/250px-YellowLabradorLooking_new.jpg" />     
</body>
</html>

2 个答案:

答案 0 :(得分:5)

var globalMainImage = $("#mainImage");在document.ready之外,该代码执行时该元素不存在。

这样做:

var globalMainImage

$(document).ready(function() {
   globalMainImage = $("#mainImage");
}

答案 1 :(得分:0)

那是因为它在文档准备好之前计算出来。它需要进入document.ready()。