2012-12-07 70 views
0

我有加載HTML表單到採用div .load()jQuery的負載緩存

形式片段具有參考js文件它重新定義了JS,同時填充與Ajax響應的形式輸入一個jQuery click事件。

當我點擊保存窗體div然後加載(使用.load)一個查看版本的保存。

如果我點擊編輯再次鼓動我提到的第一個動作,負載執行,但javascript參考不重新加載在

的任何解決方案,使阿賈克斯人口犯規踢?

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

編輯:添加代碼

function populate() { 
     var index = 1; 
     $("#list").html("&nbsp;"); 
     for (item in object) { 
      var html ='blah'; 
      $("#list").append(html); 

      $(".item").live('click', 
       function() { 
        $("#container").load("./html-includes/file.html?ver="+ver, function() { 
         apiCall.getData(referenceId); 
         alert('callback'+$rootScope.currentPage); 
        }); 
       } 
      ); 
      index++; 
     }; 
    } 

在這種情況下的文件的HTML具有前面提到的javascript參考其中有一個調試警報,其心不是在所述第二呼叫filring到.load

+0

沒有看到任何代碼或任何東西我猜你需要看看jQuery的on()方法 - http://api.jquery.com/on/ –

+0

這與緩存有什麼關係? – feeela

回答

0

很可能您的$ .load()方法首次運行,因爲瀏覽器在緩存中沒有數據。下一次在循環中調用它時,不會執行Ajax調用,而是從緩存中返回數據。因爲結果回調沒有被觸發.... 你可以使用fidller或類似的工具看到這個 - 你只會看到一個請求到服務器......

可能的解決方案是關閉緩存(參見$ .ajax ()方法)或者在當前時間查詢(aka url)中添加動態參數,所以瀏覽器不會緩存結果。 或在$ .load()中使用post方法(只需添加任何要發送的數據,而jquery將使用post而不是get),但我不確定它是否是優雅的方式來執行此操作。