jQuery对话框赢得';t关闭(使用.load数据)

jQuery对话框赢得';t关闭(使用.load数据),jquery,dialog,jquery-dialog,Jquery,Dialog,Jquery Dialog,在我的页面上(我们称之为A页面),我有一个jQuery对话框,id为customOrderEdit。在对话框中,我使用$(“#customOrderEdit”).load(“/url/to/page.php”)加载另一个页面(我们称之为第B页) 现在我想使用自定义按钮关闭对话框,但它不会关闭。我尝试过很多东西(在谷歌、stackoverflow等网站上找到),但似乎都不管用。不管关闭对话框的代码是在A页还是B页上,只要它关闭,我就很高兴 我在A页上尝试的代码: $("body").on('cli

在我的页面上(我们称之为A页面),我有一个jQuery对话框,id为
customOrderEdit
。在对话框中,我使用$(“#customOrderEdit”).load(“/url/to/page.php”)加载另一个页面(我们称之为第B页)

现在我想使用自定义按钮关闭对话框,但它不会关闭。我尝试过很多东西(在谷歌、stackoverflow等网站上找到),但似乎都不管用。不管关闭对话框的代码是在A页还是B页上,只要它关闭,我就很高兴

我在A页上尝试的代码:

$("body").on('click', '.cancelUpdateOrder', function(){
    console.log("Test"); //it displays the test console log, but it doesn't close
    $("#customOrderEdit).dialog( "close" );
    return false;
});
我在B页尝试的代码:

$(".cancelUpdateOrder").on('click', function(){
        $('#customOrderEdit').dialog('close');
        return false;
});
我还尝试以不同的方式调用click函数:

  • $(.cancelUpdateOrder”)。单击(函数(){})
  • $(.cancelUpdateOrder”).live('click',function(){})
  • $(.cancelUpdateOrder”).on('click',function(){})
最后一部分:

  • $(.ui对话框”).dialog(“关闭”)
  • window.parent.$('#customOrderEdit')。对话框('close')
  • $('#customOrderEdit',window.parent)。对话框(“关闭”)
也许还有一些我不记得了


是否有人知道我做错了什么,并能为我提供正确的代码?

类选择器可以返回对象列表,然后您可以尝试使用每个对象进行迭代:

$('.cancelUpdateOrder').each( function () {
    $(this).on('click', function () {
        $('#customOrderEdit').dialog('close');
        return false;
    })
});
如果不起作用,您可以尝试放置一个console.log来跟踪是否到达了正确的元素


希望有帮助

我遇到了这个问题,并注释掉了加载文件(文件B)中包含的jquery.js,尽管它与调用文件(文件A)中包含的jquery.js完全相同。除非您注释掉加载到对话框中的test.php文件中的
标记,否则以下示例将不起作用

html(我正在使用jquery-3.2.1和jquery ui 1.12.1)


添加
test.js

$( document ).ready(function() {

    $("#contentsContainer").on('click', '#btnAddClient', function () {
        var dlg = $("<div id=\"btnAddClientDlg\"/>").dialog({
            title: 'Add New Client',
            modal: true,
            autoOpen: false,
            width: 720,
            height: 420,
            buttons: {
                Save: function () {
                    $.post("../php/test.php");
                    $('#btnAddClientDlg').dialog('destroy').remove();

                },
                Close: function () {
                    $('#btnAddClientDlg').dialog('close');
                }
            }
        });
        dlg.load("../php/test.php");
        dlg.dialog('open');
    });
});
$(文档).ready(函数(){
$(“#contentsContainer”)。在('click','btnAddClient',函数(){
变量dlg=$(“”)。对话框({
标题:“添加新客户端”,
莫代尔:是的,
自动打开:错误,
宽度:720,
身高:420,
按钮:{
保存:函数(){
$.post(“../php/test.php”);
$('btnAddClientDlg')。对话框('destroy')。删除();
},
关闭:函数(){
$('btnAddClientDlg')。对话框('close');
}
}
});
load(“../php/test.php”);
dlg.dialog(“打开”);
});
});
test.php

<!DOCTYPE html>
<header>
    <script src="../js/jquery-3.2.1.js" type="text/javascript"></script>
</header>
<?php
    echo "hello";
?>

在引用
对话框时,您可能在a页中缺少双引号,即
->
$(“#customOrderEdit”)。对话框(
应该是
$(#customOrderEdit”)。对话框(
这对我@Ricardo不起作用。在我的案例中,该元素在按钮单击事件中到达,我得到一个
控制台.log
输出,但对
$('#myDialogName')。dialog('close');
的引用对对话框没有任何影响:(.与Femke类似,我尝试了几种方法,在初始化对话框后获得了对对话框的对象引用,然后将单击事件绑定到按钮,在这种情况下,它工作正常,但只有在我第一次打开对话框时,下一次启动对话框时,“关闭”按钮没有响应,它甚至没有到达事件处理程序。请救命啊!
<!DOCTYPE html>
<header>
    <script src="../js/jquery-3.2.1.js" type="text/javascript"></script>
</header>
<?php
    echo "hello";
?>