每次打开时重复的模态数

Number of modals duplicating each time it is opened

我有一个在其中加载表单的模式。但是,每次我单击按钮打开模态时,它都会复制之前的模态数量。它以 1 开头,然后是 2、4、8、16 等等...

这是我的代码:

$('#createButton').click(function () {
    var url = $('#createModal').data('url');

    $.get(url, function (data) {
        $('#modalContent').html(data);
        $('#createModal').modal('show');
    });
});
<div id="createModal" class="modal fade" role="dialog" data-url='@Url.Action("Create")'>
    <div class="modal-dialog" id="dialog">
        <div class="modal-content" id="modalContent">

        </div>
    </div>
</div>

非常感谢您的帮助!

编辑: 我在同一页面中确实有另一个模态,尽管它具有不同的 ID。如果我评论其中一个,仍然会遇到同样的问题。

<div id="editModal" class="modal fade" role="dialog">
   <div class="modal-dialog" id="dialogEdit">
      <div class="modal-content" id="modalContentEdit">

      </div>
   </div>
</div>
$(document).ready(function () {
    $(".menuActionsLink").click(function () {
        var url = $(this).data('url');

        $.get(url, function (data) {
            $('#modalContentEdit').html(data);
            $('#editModal').modal('show');
        });
    });
});

这应该可行,我想您可能有其中一个 ID 的重复项,也许您的代码中提到了两次 id="createModal"。孤立地看,这段代码工作正常,这表明其他地方出了问题。如果你真的很挣扎,你可以检查元素是否已经存在于 div 中,方法是做这样的事情来检查元素是否不存在。

我假设 createModal 不在 modalContent 中。如果是这样,您可以检查长度是否小于 1。如果它已经存在,那么也许您应该检查 is(':visible').

$('#createButton').click(function () {
    var url = $('#createModal').data('url');
    $.get(url, function (data) {
      if($('#modalContent #createModal').length <= 1) {
        $('#modalContent').html(data);
        $('#createModal').modal('show');
      }
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="createButton">
  Click me
</div>

已编辑且重要:如果我们在视图中保留 Javascript,它就完美了!!但是当我们想将 javascript 放在 javascript 文件中以便我们可以从所有视图调用相同的函数时,它就会出现该错误!!!!有谁知道为什么??? 这也意味着它与重复代码无关!

解决方案:

不要在 javascript 文件中调用函数作为点击!!!

function tentativa1() {

        var url = $('#asd').data('url');

        $.get(url, function (data) {
            $('#asd1').html(data);
            $('#asd').modal('show');
        });
};

使用上面看到的普通函数,然后在 HTML 中执行点击部分...

<button id="criarRegisto" onclick="tentativa1()">+ Create New Area</button>

我是新手,我不明白为什么会出现这种情况,但这种方式非常有效!