Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 当ThickBox关闭时,您将如何触发事件?_Jquery_Wordpress_Thickbox - Fatal编程技术网

Jquery 当ThickBox关闭时,您将如何触发事件?

Jquery 当ThickBox关闭时,您将如何触发事件?,jquery,wordpress,thickbox,Jquery,Wordpress,Thickbox,这个问题与Wordpress半相关,但在其他地方也有应用。基本上,我试图使它成为这样,当有人从Thickbox中退出时,它会触发页面上其他地方的事件。编辑Thickbox文件不是一个选项 这有点复杂,因为Thickbox不是那样写的。但也许你可以用一些技巧来做到这一点 这不是推荐的解决方案,但您可以“重写”关闭函数。比如: var old_tb_remove = window.tb_remove; var tb_remove = function() { old_tb_remove()

这个问题与Wordpress半相关,但在其他地方也有应用。基本上,我试图使它成为这样,当有人从Thickbox中退出时,它会触发页面上其他地方的事件。编辑Thickbox文件不是一个选项

这有点复杂,因为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');
};
Works\o/

我认为您可以通过将单击处理程序绑定到关闭按钮来解决此问题:

$("#TB_closeWindowButton").click(function() {
    doSomething();
});

如果您有选择的话,请摆脱thickbox(因为它不再被维护),并使用更活跃的社区。事实上,thickbox站点是一个链接。

您可以将侦听器绑定到“tb_unload”上,当thickbox关闭时,它会触发。使用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!');
    });
}

jQuery(“#tb_按钮”)。在('click',function()上{
tb_show(‘这是一个厚盒子里的谷歌’,’http://www.google.com?TB_iframe=true');
jQuery(“#TB_窗口”)。打开(“TB_卸载”,函数(){
警报(‘触发’);
});
}
在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");
});

你可以试试这样的

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
被触发两次,因此这包括一点黑客操作,以确保您的代码不会再次运行。

不确定这是否是一个全局解决方案,但对于WordPress,至少对于最新版本(4.9.5),您可以使用:

jQuery( 'body' ).on( 'thickbox:removed', function() {
    // Your code here.
}
在Thickbox v3.1中,tb_remove()调用:

见:


希望有帮助!

我想在打开厚盒子时触发一个事件,我可以这样做:(希望它能帮助某人)


}))

我想告诉他,但他必须重新绑定用于关闭thickbox的所有元素(关闭按钮、单击覆盖和espace按键),但是在备选项上+1:)啊-我应该已经发现了。如果有兴趣的话,我从这里得到了关闭按钮点击处理程序的想法:是的,这是个好主意,这就是我首先要做的。但是重新编写所有绑定将是一件痛苦的事:不仅仅如此,还有其他方法可以关闭一个厚盒子。你不能通过点击它的外部来关闭它吗?谢谢你的代码。发现一个问题:image upload thickbox似乎多次调用tb_remove函数,导致自定义tb_remove函数中的代码被多次调用。有什么办法对付这个吗?嗯。。。我会设法解决它的。如果我发现什么,我会发表评论。。。顺便说一句,你能使用另一个库吗?我这里有一些代码重现了WordPress中的问题:。我试图使用WordPress的内置图像上传工具thickbox,但我遇到了这个问题。找到了一个解决方案。通过使用每次调用函数时都会增加的计数器,并将代码放入仅在计数器小于或等于1时执行的if子句中,我能够将代码的执行次数减少到一次。这实际上是一个很好的答案。但是,tb_unload在指向thickbox主页的源代码中不是一个函数。但这是WordPress的版本。指出这一点可能会有所帮助。此外,它是触发thickbox的
元素,而不是输入元素。最后,该示例不起作用,因为Google禁止以这种方式加载.tb_unload事件。也许是一个JSFIDLE或codepen示例。工作得很好!
jQuery( 'body' ).trigger( 'thickbox:removed' );
jQuery( 'body' ).on( 'thickbox:iframe:loaded', function ( event ) {
//Your trigger code here.