2015-06-21 102 views
-1

我有以下代码全局变量,Jquery的

oss = $("#us"); 
mainLogo = $("#mainLogo"); 
container = $(".container"); 

$(document).ready(function(){ 
    oss.hide(); 
    oss.fadeIn(1000); 
    mainLogo.hide(); 
    mainLogo.fadeIn(1000); 
    container.find("#images").hide(); 
    container.find("#images").slideDown(); 
}) 
$(oss).click(function(){ 
    container.fadeOut(); 
}) 

我的问题是,我似乎无法访问外部的变量。我已经尝试了window.varName,只写了infront等。但编译器似乎只是跳过它,因此不做任何事情。

+2

这些脚本是否加载到页面的主体部分之前?如果是这样,'$(“anyselector”)'在页面加载之前总是一个空的jQuery对象。 – Stryner

+0

啊!这是有道理的..我没有太多的编码网页的经验,但它很有趣。 – Drwk

回答

1

下面这段代码的功能与您尝试完成的功能相同。这样你就可以在document.ready()的作用域之外声明全局变量:oss,mainLogo和container。

var oss; 
var mainLogo; 
var container; 

$(document).ready(function(){ 

    oss = $("#us"); 
    mainLogo = $("#mainLogo"); 
    container = $(".container"); 

    oss.hide(); 
    oss.fadeIn(1000); 
    mainLogo.hide(); 
    mainLogo.fadeIn(1000); 
    container.find("#images").hide(); 
    container.find("#images").slideDown(); 


    oss.click(function(){ 
     container.fadeOut(); 
    }); 
}); 
+0

所以逻辑是你创建全局变量然后插入值,字符串等等。另外$(document).ready()我已经理解正确的激活,调用时,网页加载?从而导致oss.click被调用? – Drwk

+1

在这种情况下,是因为元素在加载DOM时可用。这就是为什么需要$(document).ready()来初始化元素的更多事件。 – Pilatus