这个问题与Wordpress有半个相关,但在其他地方也有应用。基本上,我试图这样做,当有人退出Thickbox时,它会触发页面上其他地方的事件。编辑Thickbox文件不是一个选项。
答案 0 :(得分:5)
这有点复杂,因为Thickbox不是这样编写的。但也许你可以用一些技巧来做到这一点。
这不是推荐的解决方案,但您可以“重写”关闭功能。类似的东西:
var old_tb_remove = window.tb_remove;
var tb_remove = function() {
old_tb_remove(); // calls the tb_remove() of the Thickbox plugin
alert('ohai');
};
作品\ o / http://jsfiddle.net/8q2JK/1/
答案 1 :(得分:2)
你可以试试这样的......
var tb_unload_count = 1;
$(window).bind('tb_unload', function () {
if (tb_unload_count > 1) {
tb_unload_count = 1;
} else {
// do something here
tb_unload_count = tb_unload_count + 1;
}
});
tb_unload
被触发两次,所以这包括一些黑客,以确保您的代码不会第二次运行。
答案 2 :(得分:1)
我认为你可以通过将点击处理程序绑定到关闭按钮来解决这个问题:
$("#TB_closeWindowButton").click(function() {
doSomething();
});
如果您有选择,请摆脱thickbox(因为它不再维护)并使用更活跃的社区。事实上,thickbox网站proposes some alternatives mirror 。
答案 3 :(得分:0)
在Thickbox 3.1上, 我将进入thickbox-fixed.js 并将为自己添加自定义功能
只是添加一个回调函数,不确定是一个好方法,但它的工作对我的项目。
function mycustom_tb_remove(callback) {
$("#TB_imageOff").unbind("click");
$("#TB_closeWindowButton").unbind("click");
$("#TB_window").fadeOut("fast",function(){
if(callback)callback();
$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();
});
$("#TB_load").remove();
if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
$("body","html").css({height: "auto", width: "auto"});
$("html").css("overflow","");
}
document.onkeydown = "";
document.onkeyup = "";
return false;
}
所以当我使用自定义删除功能时。我将这样使用它。
self.parent.mycustom_tb_remove(function(){
alert("Closed");
});
答案 4 :(得分:0)
不确定这是否是全局解决方案,但对于WordPress,至少对于最新版本(4.9.5),您可以使用:
jQuery( 'body' ).on( 'thickbox:removed', function() {
// Your code here.
}
在Thickbox v3.1中,tb_remove()调用:
jQuery( 'body' ).trigger( 'thickbox:removed' );
请参阅:https://github.com/WordPress/WordPress/blob/master/wp-includes/js/thickbox/thickbox.js#L290
希望有所帮助!
答案 5 :(得分:0)
我希望在打开厚盒子时触发事件我能够这样做:(希望它可以帮助某人)
jQuery( 'body' ).on( 'thickbox:iframe:loaded', function ( event ) {
//Your trigger code here.
});
答案 6 :(得分:-1)
您可以将侦听器绑定到“tb_unload”,该窗口在关闭厚箱时触发。使用jQuery的示例:
<input id="tb_button" type="button" value="Click to open thickbox" />
jQuery('#tb_button').on('click', function(){
tb_show('This is Google in a thickbox', 'http://www.google.com?TB_iframe=true');
jQuery('#TB_window').on("tb_unload", function(){
alert('Triggered!');
});
}