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

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

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

码:

 $(function(){ $(" #sign_in").click(function(){ $('
').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+' |sign out ') ; $(that).dialog('close'); }) }) }, title: 'Sign in ' }); }); })

任何人都可以帮我弄清问题是什么?
谢谢

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

jQuery:通过Ajax加载modal dialog内容

您还可以将对话框的选择器更改为$('#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+' |sign out ') ; $('#box').dialog('close'); }) })