0

我正在尝试使用 jQuery 对话框让用户登录。我正在使用 ajax 和设计。用户登录后,对话窗口应关闭。我将对话框(“关闭”)放入绑定(“ajax:成功”)中,但它不起作用,我得到错误:

"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 '
        });
   });
}) 

谁能帮我找出问题所在?
谢谢

4

1 回答 1

0

这是一个问题,其答案可能对您的问题有所帮助。

jQuery:通过 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');
   })
}) 
于 2013-05-09T13:55:47.377 回答