对话框(“关闭”)在ajax:success事件处理程序中不起作用

时间:2013-05-09 13:36:16

标签: jquery dialog initialization

我正在尝试使用jQuery对话框让用户登录。我正在使用ajax和设计。用户登录后,对话框窗口应该关闭。我把对话框(“关闭”)放在bind(“ajax:success”)里面,但它不起作用我得到错误:

"cannot call methods on dialog prior to initialization; attempt to call method 'close'"

代码:

$(function(){
$(" #sign_in").click(function(){
     $('<div id="box" >').dialog({
        open: function(){ 
                 var that=this;
                 $(this).load("/users/sign_in",function(){ 
                    $("#new_user").bind("ajax:success",function(evt,data,status,xhr){
                    $("div#utility").html('welcome'+data.user+' |<a href="/users/sign_out" data-method="delete" rel="nofollow">sign out</a> ') ;
                    $(that).dialog('close');
                      })
               })
             },
        title: 'Sign in '
        });
   });
}) 

有谁能帮我弄清问题是什么?
谢谢

1 个答案:

答案 0 :(得分:0)

这是一个可能有助于解决问题的答案的问题。

jQuery: Load Modal Dialog Contents via Ajax

您还可以将对话框的选择器更改为$('#box').dialog({ ...

在您的ajax成功回调中(在您进行更改后),您可以执行$('#box').dialog('close')

编辑: 这项工作?

$(function(){
$(" #sign_in").click(function(){
 $('#box').dialog({
    open: function(){ 
        $(this).load("/users/sign_in");
    },
    title: 'Sign in '
    });
});

$("#new_user").bind("ajax:success",function(evt,data,status,xhr){
    $("div#utility").html('welcome'+data.user+' |<a href="/users/sign_out" data-method="delete" rel="nofollow">sign out</a> ') ;
    $('#box').dialog('close');
   })
})