2011-05-23 119 views

回答

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/

+0

感謝您的代碼。發現它的一個問題:圖片上傳thickbox似乎多次調用tb_remove函數,導致我的自定義tb_remove函數中的代碼被多次調用。有關如何解決這個問題的任何想法? – 2011-05-25 10:36:09

+0

嗯......我會盡力找到解決的辦法。如果我找到了一些東西,會發表評論...順便說一句你可以使用另一個庫嗎 – 2011-05-25 10:56:06

+0

我有一些代碼在WordPress這裏重現問題:[鏈接](http://wordpress.stackexchange.com/questions/18216/issue-with-code-manipulating-the-image-upload-thickbox)。我試圖使用WordPress的內置圖片上傳器thickbox,但我遇到了這個問題。 – 2011-05-25 11:04:23

1

認爲你可以破解,通過點擊處理程序綁定到關閉按鈕:

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

如果你有一個選擇,擺脫thickbox(因爲它不再維護),並使用更活躍的社區。厚實網站,其實proposes some alternativesmirror

+1

我想過告訴他,但他必須重新綁定用於關閉厚盒子的所有元素(關閉按鈕,覆蓋和espace按鍵上的點擊) – 2011-05-23 01:41:03

+0

,但在備選方案上爲+1 – 2011-05-23 01:41:13

+0

Ah - 我應該發現這一點。如果感興趣,我從這裏獲得了關閉按鈕點擊處理程序的想法:http:// designerfoo。com/jquery-thickbox-hack-to-refresh-parent-window-on-tb_close-event.html – karim79 2011-05-23 01:46:19

-1

您可以將偵聽器綁定到在關閉thickbox時觸發的「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!'); 
    }); 
} 
+0

這實際上是一個很好的答案。但是,tb_unload不是指向thickbox主頁的源代碼中的函數。但它是在WordPress的版本。指出這可能會有所幫助。而且,它是觸發thickbox的'a'元素,而不是輸入元素。最後,這個例子不起作用,因爲Google禁止以這種方式加載.tb_unload事件。也許是一個jsfiddle或codepen的例子。 – 2016-01-04 02:41:06

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

所以,當我用我的自定義刪除的功能。我會用這種方式。

​​
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被觸發,從而兩次,這包括一個黑客位,以確保您的代碼不運行第二次。

相關問題