2012-03-04 59 views
0

我把jquery.js在我之前的頁腳</body>腳本不工作時,我把jquery.js和頁腳上

<script type="text/javascript" src="/js/jquery.js"></script> 

爲什麼這個代碼不觸發?但是,當我</head>之前頭移動的jquery.js它做工精細..

$(document).ready(function() { 
    $("#sub-category").hide(); 
    $("#main-category").change(function() { 
     var id = $(this).val(); 
     var dataString = 'id=' + id; 
     $.ajax({ 
      type: "POST", 
      url: "/select-category/", 
      data: dataString, 
      cache: false, 
      success: function (html) { 
       $("#sub-category").show(); 
       $("#sub-category").html(html); 
      } 
     }); 
    }); 
}); 

讓我知道爲什麼上面的代碼不點火時,我包括我的頁腳jquery.js

+1

你的頁面中的哪裏是ready()調用?如果它在包含之前,那麼函數將不會在您調用它時定義。 – 2012-03-04 00:21:00

+1

解決方法:將它保存在它所屬的「」中。 – Ryan 2012-03-04 00:21:49

回答

1

我敢打賭,你實際上把$(document).ready(function() { });塊放在jQuery庫之前。 jQuery必須在$(document).ready(function() { });塊之前加載才能使其工作。然而,在所有情況下,保持jQuery在<head>,這是它的正確的地方

+0

將jQuery保留在''這個最佳臨時解決方案中。我只是想知道,我何時在其工作的代碼周圍放置了alert('fired'),但其餘部分並未解僱。 – 2012-03-04 00:51:37

0

您的腳本是否包含在'jquery.js'之前?那麼它將無法工作,因爲無法訪問jQuery函數。

爲幫助調試,請考慮在Firefox或Chrome/Chromium中使用集成的開發人員工具中的附加組件「Firebug」。通過按F12打開。

+0

總是jquery第一。 – 2012-03-04 00:23:06

1

我已經創建了一個簡單的墊片爲此準確。它創建一個全局jQuery(和$)對象,它們只能爲domReady排隊。它非常小,所以你可以將它內聯到HEAD標籤中(內聯以避免整個dns查詢,延遲等問題),然後按照你描述的方式編寫的正文中的任何代碼仍然可以正常工作。

https://github.com/withjam/jqshim-head

墊片基本存儲所有傳遞給jQuery的()或jQuery的()的功能。就緒(),等待真正的jQuery爲可供,然後將它們傳送到真正的jQuery()調用繼續進行isDomReady循環。

讓我知道是否有幫助。您加載jQuery腳本後

<script type="text/javascript"> 
     // Place-holder function to handle jquery, before jquery is loaded (as jquery is loaded in the footer) 
     (function(w,d,u){w.readyQ=[];w.bindReadyQ=[];function p(x,y){if(x=="ready"){w.bindReadyQ.push(y);}else{w.readyQ.push(x);}};var a={ready:p,bind:p};w.$=w.jQuery=function(f){if(f===d||f===u){return a}else{p(f)}}})(window,document) 
</script> 

將這個頁腳:

<script type="text/javascript"> 
     // This will make it possible to declare jquery inline 
     (function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document) 
</script> 

然後聲明所有的jQuery的內聯在$(文檔中的網頁標題

+0

謝謝。正是我需要的! – Vladan 2016-12-17 11:55:15

0

將以下)。就緒(函數(){});電話,它的作品。

我不記得我在哪裏找到這段代碼,但它工作得很好。