2012-01-03 239 views
1

我有一個奇怪的問題。不能讓任何jQuery動畫工作,甚至不顯示(),隱藏(),切換()等

我一直在使用只是JavaScript現在,我想切換到jquery,所以我有最新的jquery加載,有些工作,如replaceWith(),但任何動畫獲勝沒有工作。這是一個非常奇怪的問題,但我沒有在控制檯中的錯誤,我很無知,什麼是錯的...

該網站的代碼是真正壓縮,不容易閱讀,但請看看,如果你看到這個問題。例如,轉到鏈接中的頁面,然後單擊左側的「語言:」框。應該發生什麼是當你點擊H3時,默認顯示爲none的div #langlis應該顯示。但沒有發生。

jQuery的replaceWith工作,在右側的病毒掃描位使用,點擊掃描病毒,你會看到它的工作,所以一些jQuery的東西的作品,但不是更簡單的東西。 :(

http://filequake.com/download-itunes-x64/

感謝。

+1

在動畫之前放置一個斷點,然後在控制檯中運行$(選擇器)。檢查並確保其長度> = 1,即您正確選擇元素。 – asawyer 2012-01-03 19:01:03

回答

1

當你調用$("#langs_h3").click(function() {...的文件,發現每個#langs_h3元素進行查詢獲取您提供連接到Click事件(該事件偵聽器函數$()對象的click()方法)

但是,在您的頁面中,您正在尋找的H3元素在解釋器到達您的Javascript代碼時仍然不存在,因爲您的代碼出現在<h3>標記。

你可以做兩件事。您可以將您的代碼移動到頁面的底部,或者你可以保持它在頂部,但把它放在一個函數裏面,調用的jQuery()傳遞給函數作爲參數:

jQuery(function(){ 
    // your code here 
    $("#langs_h3").click(function() { /* ... */ } 
}); 

這第二個建議是常見的做法,並讓你保持所有的JavaScript在 <header>部分,這是建議。 jQuery函數意識到你正在傳遞一個函數,並且不會馬上執行它,而是在Document onLoad事件發生時將其存儲並調用它(類似於將代碼放在頁面底部)。您正在尋找的H3元素將在那時存在。

+0

嗨,如果我把代碼放在頭上會更好嗎?它最初在那裏,我試圖排除故障。 – 2012-01-03 19:54:09

+0

嗨,我已經用你的建議把jQuery(function()等)放在它的周圍,它可以工作,我也將它移動到頭部,它仍然有效,所以謝謝。:)我仍然不明白所有關於事件監聽器的說法,以及在元素創建之前運行這些代碼,因爲它出現在代碼後面,我沒有意識到頁面是從底層構建的?顯然我錯過了一些基本的東西在這裏.. :( – 2012-01-03 19:57:47

+1

請參閱編輯的答案。 – 2012-01-04 08:54:07