避免重新加载部分视图中的JavaScript文件
问题描述:
在我的项目中,我有一个大的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) {
}
});
}
答
这有什么好做重装。一旦文件在浏览器中加载一次,它将保持高速缓存,所以告诉它在多个位置加载,只要它在同一个域中,就可以从缓存中加载它。
这就是说,您的问题是因为JQuery不会自动将其选择器应用于添加到DOM的新元素。它不会主动观看,因此除非您明确地这样做,否则新元素将不会获得事件或进行处理。
您可以重构您的脚本,以便适用于您的局部视图的零件处于各自的功能中。这样,当局部视图发生变化时,您可以调用该函数将jQuery选择器应用于它们。
如果您关心的是为表格或列表中的事件挂钩,则可以通过将这些事件放置在DOM中较高的元素上,使其不推迟。 JavaScript中的事件冒泡,而不是在表/列表中的项目上监听单个事件,而是在列表本身上监听它们。这样,当表格发生变化时,新的元素仍然会冒出他们的事件。
我想使用该大文件,并避免在部分视图中重新加载它 –