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