1

我有一个为重用目的而创建的局部视图。这个局部视图有一个使用 Chosen 插件的下拉列表。因此,在部分视图中,我参考了所选的 js/css 文件以及一些 javascript 代码以准备好文档。

它按预期工作。但是,现在我有一个页面,可以在按钮单击事件时呈现部分视图。用户可以根据需要多次单击。

我担心的是每次单击按钮时都会加载重复的 js。这也许就是人们不建议直接将 js 添加到 Partial View 的原因。就我而言,它需要用于局部视图本身的插件和操作。有没有一种很好的方法来检查加载的 js 并防止它在随后的点击事件中再次加载它?

4

2 回答 2

0

首次加载页面时,页面中应包含选择的 JavaScript 和 CSS 文件。当用户单击按钮时,进行 Ajax 调用以包含部分。在 AJAX 请求的成功回调中,为刚刚注入页面的下拉列表初始化 Chosen 插件代码。

你是正确的,重复的 JS 和 CSS 文件会被加载,这绝对是你不想要的。

$.ajax(...)
    .done(function(data) {
        $("#foo")
            .html(data)
            .find("select")
            .each(function() {
                $(this).chosen({...});
            });
    });
于 2014-12-10T21:05:19.847 回答
0

用答案扩展我的评论。

您可以留下多个 css 文件,我认为这不会造成任何伤害。至于 JS 文件,首先你应该创建一个包装文件

包装器.js

$(function() {
      if (!$().chosen) { //we do this only if chosen is not present
         var script = document.createElement('script');
         script.type = 'text/javascript';
         script.src = 'url to yor chosen library';

         $("body").append(script);
      }     
});

然后在您的视图中,您将引用这个wrapper.js文件而不是您的chosen库路径。

于 2014-12-10T21:41:41.117 回答