2

当我尝试返回一个链接以从一个简单的 php 回显中拉出我的页面上的厚框时,我遇到了一些问题。基本上我所拥有的是:

包含一些包含语句的页面,例如:

<?php 
    include ("display_header.php");
?>

每个包含语句仅指向一个 php 文件,该文件提取一个简短的查询并回显一个带有锚 ref 的链接,以在用户单击链接文本时打开一个内联厚框(带有一个表单),例如:

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 语句。

任何人都可以提供一些指导吗?我知道这里有很多才华横溢的人,我可能只是不了解一些非常基本的东西。谢谢!

4

2 回答 2

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');
                }
});
于 2009-08-08T15:26:51.580 回答
0

听起来这是一个 javascript 问题,而不是一个 php 问题。

在我看来,您在页面加载时注册了一个事件,一旦 ajax 事件完成,您就不会重新注册该事件。不过,如果没有看到 javascript,我无法知道这一点。

于 2009-08-08T15:28:50.547 回答