thickbox有助于在关闭时从父html调用方法

时间:2010-02-14 18:24:50

标签: jquery jquery-plugins thickbox

我使用thickbox加载html。这个html有一个表单,我需要添加一些东西到数据库。我在主html中有一个选择框(我从中加载了厚箱)。 我想要做的是当我按下厚箱中的关闭按钮时,必须使用刚刚添加到数据库中的内容更新选择框。我正在考虑修改thickbox close方法并调用我更新选择框的方法,但是当我这样做时,thickbox会崩溃。任何暗示都将非常感激。

2 个答案:

答案 0 :(得分:8)

你也可以'劫持'整个tb_remove函数。 这意味着您不仅可以捕获链接点击,还可以按ESC键。

这涉及重新命名内联的原始remove方法并用你自己的方法替换它。

    <script type="text/javascript">
        var original_tb_remove = tb_remove;
        tb_remove = function () { 
                  **** insert your coolness here ****
                  original_tb_remove(); 
                  return false; } 
    </script>

注意:确保在首次调用thickbox之前执行此操作以获得最大成功。

答案 1 :(得分:0)

如果使用Firebug检查厚箱的运行情况,您可以看到厚箱模式实际上是主页面内的div。您只需从厚箱中调用主页面中的任何功能即可。

例如,此代码将“劫持”thickbox close链接并执行额外的操作:

$("#TB_closeWindowButton").click(function(){
  tb_remove();
  //do extra stuffs, such as get a new select
  var select_parent = $('#theselect').parent();
  $.get('new_select.php',
        {},
        function(data){
          select_parent.html(data);
        });
});

除了劫持厚箱关闭链接,您还可以将代码放入厚箱内的任何链接。只需确保在自定义代码之前或之后调用tb_remove()关闭厚盒窗口。如果涉及提交表单,请使用jQuery form plugins通过AJAX提交表单,然后在成功的表单提交上运行close函数。

关于更新选择框,请参阅我的回答here,了解如何在每个浏览器中运行它。

要确保始终调用您的函数,您可以将thickbox设置为使用将禁用转义键的modal模式。请记住放置密码,因为默认情况下,不会显示thickbox栏。