Как бы вы вызвали событие, когда ThickBox закрывается? - PullRequest
6 голосов
/ 23 мая 2011

Этот вопрос частично связан с Wordpress, но имеет приложения в других местах.По сути, я пытаюсь сделать так, чтобы, когда кто-то выходил из Thickbox, он вызывал событие в другом месте на странице.Редактирование файла Thickbox не вариант.

Ответы [ 7 ]

6 голосов
/ 23 мая 2011

Это немного сложно, так как 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');
};

Работает \ о / http://jsfiddle.net/8q2JK/1/

2 голосов
/ 17 апреля 2015

Вы можете попробовать что-то вроде этого ...

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 запускается дважды, так что это включает в себя немного хака, чтобы убедиться, что ваш код не запускается во второй раз.

0 голосов
/ 28 мая 2018

Я хотел вызвать событие, когда толстая коробка открыта, я смог сделать это следующим образом: (надеюсь, это кому-нибудь поможет)

jQuery( 'body' ).on( 'thickbox:iframe:loaded', function ( event ) {
//Your trigger code here.

});

0 голосов
/ 09 мая 2018

Не уверен, что это глобальное решение, но для 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

Надеюсь, что поможет!

0 голосов
/ 24 апреля 2014

В 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");
});
0 голосов
/ 05 августа 2013

Вы можете привязать слушателя к «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!');
    });
}
0 голосов
/ 23 мая 2011

I думаю вы можете взломать это, привязав обработчик щелчка к кнопке закрытия:

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

Если у вас есть выбор, избавьтесь от Thickbox (поскольку он больше не являетсяподдерживается) и использовать что-то с более активным сообществом.Сайт Thickbox, фактически, предлагает несколько альтернатив mirror .

...