2014-07-25 46 views
0

的javascript模塊模式的作品我是後端開發者,我寫javascript僅在需要時並沒有最好的方式。但我想盡我所能救贖自己,併爲有組織和遵循最佳實踐的明星寫作。上jsbin但不是在我的服務器/瀏覽器

因此,我啓動了一個模塊模式來封裝一些函數,並綁定我的標記中的UI事件,因爲這是非常多的嘗試和錯誤,我使用jsbin,他是一位前端開發人員的朋友的建議。

事情是,我的概念在jsbin上工作,但後來我將它移到了服務器中的js文件中,似乎我鬆散了我在模塊模式中緩存的jQuery對象的範圍。

http://jsbin.com/ciwomeve/7/edit

的功能是非常基本的我填充兩個選擇元素(這工作),那麼我結合對那些選擇更改事件,並觸發時我應該調用一些功能,最終應該做一個選項ajax請求到我的後端並獲取數據。

你們可以請告知我的代碼,並告訴我,我做錯了嗎?

+0

jQuery鏈接到你的服務器發送的頁面上嗎?你能提供一個鏈接到你的網站? – ebenpack

+0

是後面的VPN,那麼傷心沒有,但是,是我有JQ 的populateHostLists FN用途jQuery和那個工作 – orlybg

+0

一些想法:如果你只是在瀏覽器中查看HTML頁面(即文件沒有被提供,URL讀取'file://'),那麼jQuery的協議相對路徑將不會工作。我知道你說過你在服務他們,但我想我會提及它以防萬一。或者您的腳本標記的順序可能錯誤。 – ebenpack

回答

2

沒有太多去這裏,但我敢肯定,你的問題是,你的腳本標籤是<head>,並加載您的內容之前,它的運行。如果是這樣的話,它會試圖訪問的DOM元素還不存在(例如,當這條線運行,$hostSelect1: $('#host-select-1') id爲host-select-1選擇元素不會存在,但jQuery將尋找它不管怎樣,默默地失敗)。

您可以將腳本移動到</body>之前的頁面底部,在這種情況下,您可以確定腳本運行時將加載所有內容。該方法還具有其他一些性能優點。否則你可以將你的電話打到DbDiff.init()$().ready,就像這個$().ready(function(){DbDiff.init()});一樣,這個效果大體上是一樣的(除了settings已經被評估了......你需要做一些重組以便確保$('#host-select-1')等只有在您的DOM內容已經加載後纔會被評估並分配給$hostSelect1)。

相關問題