2011-05-23 11 views

cevap

5

O thickbox beri biraz karışık bu şekilde yazılı değil mi. Ama belki bunu yapmak için bazı hileler kullanabilirsiniz.

Önerilen çözüm bu değil, ancak kapat işlevini "yeniden yazabilirsiniz". Bir şey gibi:

var old_tb_remove = window.tb_remove; 

var tb_remove = function() { 
    old_tb_remove(); // calls the tb_remove() of the Thickbox plugin 
    alert('ohai'); 
}; 

İşleri \ o/http://jsfiddle.net/8q2JK/1/

+0

Kod için teşekkürler. Bununla ilgili bir sorun bulundu: image upload thickbox, tb_remove işlevini birden çok kez çağırıyor ve özel tb_remove işlevindeki kodun birden çok kez çağrılmasına neden oluyor. Bununla nasıl savaşacağın hakkında bir fikrin var mı? –

+0

hmmm ... Düzeltmek için bir yol bulmaya çalışacağım. Bir şey bulursam yorum yapar mısınız? Btw başka bir kütüphane kullanabilir misin? –

+0

Burada WordPress sorunu reproduces bazı kodlar vardır: [link] (http://wordpress.stackexchange.com/questions/18216/issue-with-code-manipulating-the-image-upload-thickbox). WordPress'in dahili görüntü yükleyici thickbox'ı kullanmaya çalışıyorum ama bu konuya giriyorum. –

1

bence sen kesmek anlamına kapatma düğmesine bir tıklama işleyicisi bağlanarak:

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

Eğer bir seçim varsa, Thickbox'tan kurtulun (artık korunmuyor) ve daha aktif bir toplulukla bir şeyler kullanın. Aslında thickbox site, proposes some alternativesmirror.

+1

Ona bunu anlatmayı düşündüm, ama o kalın kutuyu kapatmak için kullanılan tüm elemanları (kapat düğmesi, bindirme ve espace tuşa basma tıklaması) –

+0

ama +1 alternatiflerinde +1 tekrar etmek zorunda kalacaktı –

+0

Ah - Bunu fark etmeliydim. İlgilenirse, buradan kapat düğmesi tıklatma işleyicisi fikrini aldım: http: // designerfoo.com/jquery-thickbox-hack-to-refresh-parent-window-on-tb_close-event.html – karim79

-1

Bir dinleyiciyi, kalın kutu kapalı olduğunda tetikleyen "tb_unload" a bağlayabilirsiniz. jQuery kullanarak Örnek: thickbox-fixed.js içinde nereye ve kendim için özel bir işlev katacak thickbox 3.1 On

<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

Bu gerçekten harika bir cevaptır. Ancak, tb_unload, thickbox'ın ana sayfasına işaret eden kaynak koddaki bir işlev değildir. Ancak WordPress'in sürümünde. Bunu işaret etmek yardımcı olabilir. Ayrıca, bir giriş elemanı değil, kalın kutuyu tetiklemek için bir 'a' elemanıdır. Son olarak, Google, bu way.tb_unload etkinliğine yüklenmeyi yasakladığından örnek çalışmaz. Belki bir jsfiddle veya codepen örneği. –

0

,

sadece bir geri çağırma işlevi eklemek için, emin değil iyidir yol, ama benim projem için onun çalışması. Özel silme işlevimi kullandığımda, bu nedenle, bu yüzden özel işlevini kullanıyorum. Bunu böyle kullanacağım.

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

Böyle bir şey deneyebilirsiniz ...

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 iki kez yani bu bir hack biraz kodunuzu ikinci kez çalışmaz emin olmak için içerir tetiklenir.

İlgili konular