【问题标题】:jquery ui dialog will not "close"jquery ui 对话框不会“关闭”
【发布时间】:2012-06-19 13:45:50
【问题描述】:

我有一个 jquery 对话框,我想创建 JIT(及时),对我来说,这是迄今为止最优雅的工作方式,但我已经花了大约 2 天的时间来解决这个错误,但我不能我的生活弄清楚了。

我知道它应该可以工作,因为角落里的 X 点击效果很好

所以。你能a)帮我解决这个问题吗或b)告诉我如何将取消按钮绑定到X的点击事件(我以前在出现此类问题时使用过这个技巧,但是我在这个控件上没有id可以找到,现在很明显的方式(我知道如何找到)使用 parents() 浏览层次结构。

 $(function() {
     var popUrl = 'pop.php?jscriptpopup=true';
     $("#button").click( function () { 
         JQueryDialog(popUrl); 
         return false;
     });        
 });

var dialog;  //<--added in desperation

function JQueryDialog(url){

    $("#dialog").remove();

    $("body").append("<div id='dialog'></div>"); 

    dialog = $("#dialog").dialog({
        resizable: false,
        draggable: false,
        width: 770,
        height: 470,
        context: that,
        modal: true,
        autoOpen: false,
        buttons: {
            "Cancel" : function (){
                $(dialog).("close");    //<--this will not work
                                    //$(this).dialog("close"); <<-- hopeless
                                    //$("#dialog").dialog("close"); <<-- hopeless
                                    //$("#dialog").remove(); <<-- hopeless
            }
        }
    });     

    $.get(url, function(data) {
        $("#dialog").html(data);
        $("#dialog").dialog('open');        
    });     
}

【问题讨论】:

    标签: jquery user-interface dialog


    【解决方案1】:

    在这样做至死之后,我发布的那一刻我在几秒钟内偶然发现了它 - 通常是这样

    这行得通..不知道为什么

    function JQueryDialog(url){
    
        $("#dialog").remove();
    
        $("body").append("<div id='dialog'></div>"); 
    
        that = $("#dialog");
    
        dialog = $("#dialog").dialog({
            resizable: false,
            draggable: false,
            width: 770,
            height: 470,
            context: that,
            modal: true,
            autoOpen: false,
            buttons: {
                "Cancel" : function (){
                    that.dialog("close");
                }
            }
        });     
    
        $.get(url, function(data) {
            $("#dialog").html(data);
            $("#dialog").dialog('open');        
        });     
    }
    

    【讨论】:

    • 根据 jquery UI 文档$(this).dialog("close") 应该在 Cancel 中工作。 jqueryui.com/demos/dialog/#option-buttons
    • 是的,我知道它应该可以工作,但我强烈怀疑这是由 after-include-lib-some.js 引起的气泡事故的覆盖(我对此表示怀疑,我将它们一一注释掉作为测试)或错误(我使用了 3 或 4 个版本的 jQuery,他们似乎都遭受了它)即错误作为我将 div 添加到 DOM 的事实的推导
    • 我有一个思考,它必须是因为 $('#dialog') 实际上被一些幕后逻辑替换,所以现在有 2:$ ('#the-old-dialog-div-now-replaced-that-actions-exist-in') 和一个“让我处理这个” $('#dialog') 实际上是一个替代嵌套在..和当您按照我的方式附加 div 时,replacement $('#dialog') 使用的准备事件未正确配对以成为 $(this) ......因此(如果我的猜这里是正确的)“那个”有效,因为它是 shell div 事件的一部分
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 2017-06-29
    • 2013-07-08
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多