设置: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之后不会捕获视图配置文件的链接?
提前谢谢你, 尼
答案 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');到第一次点击事件..没有第二次修改,重新加载后事件仍然不会触发,它也会在页面中导致无法预料的结果......
我会将此作为答案,但我真的不知道如何:)
的问候, 尼