当我尝试从一个简单的php echo返回一个链接从我的页面上拉出一个厚箱时,我遇到了一些问题。基本上我所拥有的是:
包含一些包含语句的页面,如:
<?php
include ("display_header.php");
?>
每个include语句只指向一个php文件,该文件提取一个简短的查询并回显一个带有锚点的链接,当用户点击链接文本时,打开一个内联的thickbox(带有一个表单): / p>
echo "<a href='#TB_inline?height=265&width=225&inlineId=header_change' class='thickbox' style='text-decoration:none; color:#990000'>";
echo "Query Result etc";
echo "</a>";
因此,当用户点击页面上的链接时,应该弹出带有表单的厚箱。用户输入他们对给定部分的更改,单击提交,jquery ajax发布表单并使用include语句重新加载div以显示更改。
第一次加载页面时这是有效的,但是一旦我提交表单并尝试再次点击返回的链接就没有任何反应。这似乎是有效的,如果我的内部包含语句包含div的链接(这不是一个大问题),但我只是不明白为什么这不起作用如果我在包含链接php声明。
有人可以提供一些指导吗?我知道这里有很多才华横溢的人,我可能只是不了解一些非常基本的东西。谢谢!
答案 0 :(得分:3)
您需要使用Events/live将thickbox绑定到您的链接。类似的东西:
$("a.thickbox").live("click",function() {
tb_init('a.thickbox');
});
这将阻止启用了thickbox的链接在重新加载或通过ajax注入后失去与thickbox的绑定。
您也可以在回调$ .ajax(或$ .post或其他)方法时执行此操作,例如:
$.ajax({
type: "GET",
url: "/ajax-content.php",
cache: false,
data: "f=foo&b=bar",
loading: $('.loading').html(''),
success: function(html) {
$('#ajaxContent').html(html);
//re-attach thickbox
tb_init('a.thickbox, area.thickbox, input.thickbox');
}
});
答案 1 :(得分:0)
听起来这是一个javascript问题而不是php问题。
听起来我在页面加载时注册了一个事件,一旦ajax事件完成,你就不会重新注册该事件。我不知道如果没有看到javascript。