2011-05-23 8 views

Respuesta

5

Es un poco complicado ya que Thickbox no está escrito de esa manera. Pero tal vez puedas usar algunos trucos para hacerlo.

No es la solución recomendada, pero puede "reescribir" la función de cierre. Algo así como:

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/http://jsfiddle.net/8q2JK/1/

+0

Gracias por el código. Encontré un problema: la ventana gruesa de carga de imágenes parece llamar a la función tb_remove varias veces, haciendo que el código en mi función personalizada tb_remove sea llamado varias veces. ¿Alguna idea sobre cómo combatir esto? –

+0

hmmm ... Trataré de encontrar la manera de solucionarlo. Comentaré si encuentro algo ... ¿Por cierto puedes usar otra biblioteca? –

+0

Tengo un código que reproduce el problema en WordPress aquí: [link] (http://wordpress.stackexchange.com/questions/18216/issue-with-code-manipulating-the-image-upload-thickbox). Estoy tratando de usar el thickbox de carga de imagen incorporado de WordPress, pero me estoy encontrando con este problema. –

1

I que se puede hackear que mediante la unión de un controlador de clic en el botón de cierre:

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

Si usted tiene una opción, deshacerse de thickbox (ya que no se mantiene) y usar algo con una comunidad más activa. El sitio thickbox, de hecho, proposes some alternativesmirror.

+1

Pensé en decirle eso, pero tendría que volver a vincular todos los elementos utilizados para cerrar la caja gruesa (el botón Cerrar, el clic en la plantilla y la tecla espaciada) –

+0

pero +1 en las alternativas :) –

+0

Ah - Debería haberlo visto. En caso de que sea de interés, obtuve la idea de hacer clic en el botón Cerrar desde aquí: http: // designerfoo.com/jquery-thickbox-hack-to-refresh-parent-window-on-tb_close-event.html – karim79

-1

Puede enlazar un oyente con el "tb_unload" que se activa cuando se cierra el thickbox. Ejemplo usando 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

Esta es en realidad una gran respuesta. Pero, tb_unload no es una función en el código fuente apuntado a la página de inicio de thickbox. Pero está en la versión de WordPress. Señalar esto podría ayudar. Además, es un elemento 'a' para desencadenar thickbox, no un elemento de entrada. Finalmente, el ejemplo no funciona, ya que Google prohíbe que se cargue de esta forma.tb_unload event. Tal vez un ejemplo jsfiddle o codepen. –

0

En Thickbox 3.1, voy a entrar en el interior Thickbox-fixed.js y añadirá una función personalizada para mí

sólo para añadir una función de devolución de llamada, no estoy seguro es un buen manera, pero es trabajo para mi proyecto.

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; 
} 

Cuando uso la función de eliminación personalizada. Lo usaré de esta manera.

self.parent.mycustom_tb_remove(function(){ 
    alert("Closed"); 
}); 
2

Usted puede intentar algo como esto ...

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 se dispara dos veces por lo que este incluye un poco de un truco para asegurarse de que su código no se ejecuta la segunda vez.

Cuestiones relacionadas