表单保存后链接不会打开jquery对话框

时间:2010-12-19 19:17:33

标签: jquery cakephp

设置:cakephp,jquery 1.8.7,cakephp.bee.pl ajax helper

我有一个网站设置为通过ajax加载所有页面。在管理页面中,我加载'users / index'操作并加载用户。我插入了一个链接来打开一个jquery对话框来添加一个新用户。管理员点击保存后,它会将数据发送到服务器,保存用户并返回“索引”视图以更新管理页面“div”。到现在为止没有任何问题。问题是在更新新更新的div中的链接而不是打开jquery对话框或删除用户并通过ajax重新定位索引视图后,他们将浏览器重定向到'index'视图但在新页面中并且不通过ajax加载它

这是我的对话框创建代码:

<script type="text/javascript">
    $(document).ready(function(){
        $('a[name=modal]').click(function (e){
            e.preventDefault();
            var $link = $(this);
            var $form = $link.attr('formid');            
            // var $dv = $body.append('<div id="dlg"></div>');

        $('#useDlg').load($link.attr('href')).dialog({
         autoOpen: false,
         modal: true,
         title: $link.attr('title'),
         resizable: false,
         width: 370,
         height: 350,
         buttons: {
            "Close": function(){
                $(this).dialog("close");
                //$(this).dialog("destroy");
            },
            " Save ... ": function(){                
                $.ajax({
                    async: true,
                    type: 'POST',
                    url: $link.attr('href'),
                    data: $("form").serialize(),
                    dataType: "html",
                    success: function (response, json){
                        //alert(response);
                        $('#viewUsers').empty().html(response);
                        $('#useDlg').dialog("close");
                       // $('#useDlg').dialog("destroy");
                    }
                });
            }
         }
      });
   });
});

  $('a[name=modal]').click(function(){
       $('#useDlg').dialog('open'); 
    });

我多次使用该对话框来编辑用户个人资料。用户表有两个与用户相关的链接。查看个人资料和删除。视图配置文件打开带有用户配置文件的jquery对话框,删除删除用户并通过ajax返回索引操作以更新管理页面的用户部分。

是否有人知道为什么在刷新用户div之后不会捕获视图配置文件的链接?

提前谢谢你, 尼

2 个答案:

答案 0 :(得分:1)

由于你没有发布你的标记代码,所以很难确切地说出来,但是我怀疑当你在load()调用中重新加载表单html时,'click'处理程序正在丢失。

尝试更改'click'处理程序'live',动态重新绑定。例如:

$("a[name=modal]").live("click", function(event) {
    // do stuff here...
});

请在此处查看“直播”文档:http://api.jquery.com/live/

答案 1 :(得分:0)

谢谢你的Mikesname ......这就是诀窍......对于任何可能解决这个问题的人我也删除了

$( '一个[名称=模态]')。点击(函数(){        $( '#useDlg')对话框( '开放')。     });

并且只添加了$('#useDlg')。对话框('open');到第一次点击事件..没有第二次修改,重新加载后事件仍然不会触发,它也会在页面中导致无法预料的结果......

我会将此作为答案,但我真的不知道如何:)

的问候, 尼