【问题标题】:Php returns thickbox link that doesn't workphp返回不起作用的thickbox链接
【发布时间】:2009-08-08 15:18:45
【问题描述】:

当我尝试返回一个链接以从一个简单的 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 语句。

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

【问题讨论】:

    标签: php jquery thickbox echo


    【解决方案1】:

    您需要使用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');
                    }
    });
    

    【讨论】:

    • 太棒了,谢谢。我肯定有很多关于 jquery 的知识。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 2014-10-11
      • 2010-09-27
      • 2012-10-07
      • 2023-03-18
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多