2015-06-21 99 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