2017-08-18 35 views
0

我有以下的HTML模式时运行多次局部视图的JavaScript在引导模式加载

<div id="mdEdit" class="modal fade" role="dialog" style="overflow:hidden;" data-width="800"> 
    <div class="modal-dialog modal-lg"> 
     <div class="modal-content"> 
      <div> 
       <img src="/Content/images/ico-cross.png" style="cursor:pointer; margin:10px; float:right" class="" data-dismiss="modal" alt=""> 
      </div> 
      <div class="modal-body" style="padding:25px;" id="mdbEdit"> 
      </div> 
     </div> 
    </div> 
</div> 

我用下面的脚本在它

function EditFile(gridId, fileID, ctrl) { 
      var grid = $('#grid_' + gridId).data("kendoGrid"); 
      var dataItem = $("tr", grid.tbody).index($(ctrl).closest("tr")); 
      $.ajax({ 
       url: "/I9Roster/EditFileAjax?Id=" + fileID + "&dataItemNo=" + dataItem + "&gridId=grid_" + gridId, 
       cache: false, 
       success: function (data) { 

        $('#mdEdit').modal('toggle'); 
        $('#mdbEdit').html(data); 

       } 
      }); 
     } 

我现在面临的问题是要加载的局部视图我有主页上的项目列表,并点击按钮,一些项目加载模式一个接一个地运行javascript在部分视图模式已经弹出的次数。例如假设我点击第一个项目,模态用局部视图打开,并且JavaScript只运行一次,然后关闭此模式并单击其他项目打开具有相同局部视图的模式。现在,当部分视图被加载两次时,javascript运行两次。这继续发生部分视图以模式加载的次数。如何解决这个问题?

回答

0

问题通过将<div>包含在主页面上的JavaScript重写,而不是部分视图来解决。

在你的情况下,含有莫代尔局部视图看起来就像这样:

<div class="modal-dialog modal-lg"> 
    <div class="modal-content"> 
     <div> 
      <img src="/Content/images/ico-cross.png" style="cursor:pointer; margin:10px; float:right" class="" data-dismiss="modal" alt=""> 
     </div> 
     <div class="modal-body" style="padding:25px;" id="mdbEdit"> 
     </div> 
    </div> 
</div> 

而下面的div应放置在主页:

<div id="mdEdit" class="modal fade" role="dialog" style="overflow:hidden;" data-width="800"> 
+1

也请解释一下,为什么作品。解决问题总是很好的,但由于编程通常是要了解你所做的事情,所以最好解释一下如何解决问题,而不是仅仅去解决问题。 – SourceOverflow

+0

我不得不说这是纯粹的直觉。我已经做了一些研究,但还没有能够说明为什么这可行。 –