2012-03-24 54 views
1

我想開發一個日期選擇器。我正在準備JavaScript字符串中的整個日曆,並將其附加到div元素。問題在於jQuery click事件的行爲有所不同。如果我將整個代碼寫入$(document).ready()事件的.js文件中,並將該腳本文件添加到HTML文件的頂部,則點擊事件無法正常工作(意思是說,如果我在3月份,如果我點擊下一步,日曆將導航到4月的下個月,但隨後,無論何時點擊它,我都會收到舊的月份)。jquery表現不同

如果我把整個腳本寫在html文件的底部(body標籤之後),它可以正常工作。

當我把代碼放入jsFiddle。它也在那裏工作。我認爲他們在頁面底部附加腳本代碼。

如果代碼位於$(document).ready()事件處理程序中,可能會出錯?這裏是the jsFiddle link

+0

當您在HTML頂部運行JS時,是否會收到任何JavaScript錯誤? – Jacob 2012-03-24 07:14:13

+0

編號它沒有給出任何錯誤..它工作正常,第一次點擊..然後其不正常工作.. – 2012-03-24 07:16:30

回答

0

我認爲這在IE中發生。我能夠重現它。瀏覽器顯示爲以「怪癖模式」運行。當它處於此模式時,ArrayindexOf功能未定義。此JavaScript錯誤會阻止日曆選取器正常運作。離開怪癖模式解決了這個問題。

要解決此問題,您可以確保您爲頁面定義了正確的DOCTYPE或具有避免怪癖模式的元標記<meta http-equiv="X-UA-Compatible" content="IE=edge" />

我不確定爲什麼移動腳本會觸發不同的模式。也許其他人知道這個答案。

+0

我在IE 9中運行..它給了我正確的索引。問題是,接下來,我得到ID爲DP_MONTH的標籤的月份名稱,從monthArray中找到月份的索引,然後增加它。$('#DP_MONTH').text()在第一次點擊時正確。在病房裏,它總是給3月,雖然標籤有另一個月份的名字,所以它顯示四月只在每一次點擊。我希望你明白了我的觀點..... – 2012-03-24 08:52:59

+0

我不能再現這種情況。您可以發佈您的HTML,以便我們可以看到,當這個問題開始發生時,包括您的腳本到底有多精彩? – Jacob 2012-03-24 18:58:14

+0

謝謝,我可以用另一種方式解決這個問題..但它的工作正常... – 2012-03-25 14:04:52