开发者

referencing, from within a function, a global variable storing a returned jQuery object

Ok, I know there is something simple going on here that I'm missing, all I'm trying to开发者_高级运维 do is store an object returned from a jQuery query like

var obj = $("#objectID");

as a global vand then reference it from within a function.

The example below serves a picture of a dog but then uses jQuery to swap the src attribute of the image to show a cat. What am I missing?

    <!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>


var globalMainImage = $("#mainImage"); is outside of document.ready, the element doesnt' exist at the time this code is executed.

Do this:

var globalMainImage

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


That's because it calculates that before the document is ready. It needs to go inside the document.ready().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜