2017-02-25 113 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中的事件冒泡,而不是在表/列表中的项目上监听单个事件,而是在列表本身上监听它们。这样,当表格发生变化时,新的元素仍然会冒出他们的事件。