2017-02-25 75 views
-1

在我的項目中,我有一個大的JavaScript文件(大於1 MB),我在所有頁面中使用,我把它放在_Layout中,每件事都正常工作,但是當我想更新部分視圖顯示一張表,我鬆散的部分視圖和JavaScript文件之間的鏈接,如果我想在部分視圖中重新加載它,用戶需要浪費他們的時間來改變。我使用ajax來更新部分視圖。 我能做些什麼來解決這個問題?避免重新加載部分視圖中的JavaScript文件

,我使用

的Java腳本是:<script src="~/Content/js/vendor.min.js"></script>

阿賈克斯,我用它來更新opartial的觀點是:

<script> 
    function EditClick(id, pg) {   
     var model = { 
      CurrentPage: pg, 
      SortColumn: '@Model.SortColumn', 
      SortStatus: '@Model.SortStatus', 
      id: id,    
    }; 
    var formDiv = $("#rplaceInsert"); 
    $.ajax({ 
     cache: false, 
     type: "Post", 
     url: "@Url.Action("EditSurgeryType", "SurgeryType")", 
     contentType: 'application/json', 
     data: JSON.stringify(model) 
     , 
     success: function (data) { 
      formDiv.html(data);     
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

     } 
    }); 
} 

+0

我想使用該大文件,並避免在部分視圖中重新加載它 –

回答

0

這有什麼好做重裝。一旦文件在瀏覽器中加載一次,它將保持高速緩存,所以告訴它在多個位置加載,只要它在同一個域中,就可以從緩存中加載它。

這就是說,您的問題是因爲JQuery不會自動將其選擇器應用於添加到DOM的新元素。它不會主動觀看,因此除非您明確地這樣做,否則新元素將不會獲得事件或進行處理。

您可以重構您的腳本,以便適用於您的局部視圖的零件處於各自的功能中。這樣,當局部視圖發生變化時,您可以調用該函數將jQuery選擇器應用於它們。

如果您關心的是爲表格或列表中的事件掛鉤,則可以通過將這些事件放置在DOM中較高的元素上,使其不推遲。 JavaScript中的事件冒泡,而不是在表/列表中的項目上監聽單個事件,而是在列表本身上監聽它們。這樣,當表格發生變化時,新的元素仍然會冒出他們的事件。