2011-05-23 14 views
5

यह प्रश्न वर्डप्रेस से सेमी-संबंधित है, लेकिन इसमें कहीं और अनुप्रयोग हैं। असल में, मैं इसे बनाने की कोशिश कर रहा हूं जब कोई थिकबॉक्स से बाहर निकलता है, तो यह पृष्ठ पर कहीं और एक ईवेंट ट्रिगर करता है। थिकबॉक्स फ़ाइल को संपादित करना एक विकल्प नहीं है।जब कोई मोटीबॉक्स बंद हो जाता है तो आप किसी ईवेंट को कैसे ट्रिगर करेंगे?

उत्तर

5

यह थोड़ा जटिल है क्योंकि थिकबॉक्स इस तरह से लिखा नहीं गया है। लेकिन शायद आप इसे करने के लिए कुछ चाल का उपयोग कर सकते हैं।

यह अनुशंसित समाधान नहीं है लेकिन आप करीबी फ़ंक्शन को "पुनः लिख सकते हैं"। कुछ की तरह:

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

कोड के लिए धन्यवाद। इसके साथ एक समस्या मिली: छवि अपलोड मोटाबॉक्स tb_remove फ़ंक्शन को कई बार कॉल करने लगता है, जिससे मेरे कस्टम tb_remove फ़ंक्शन में कोड कई बार कहा जाता है। इस से लड़ने के तरीके पर कोई विचार? –

+0

हमम ... मैं इसे ठीक करने का एक तरीका खोजने का प्रयास करूंगा। अगर मुझे कुछ मिल जाए तो टिप्पणी करेंगे ... बीटीडब्ल्यू क्या आप दूसरी लाइब्रेरी का उपयोग कर सकते हैं? –

+0

मेरे पास कुछ कोड है जो वर्डप्रेस में समस्या को पुन: उत्पन्न करता है: [link] (http://wordpress.stackexchange.com/questions/18216/issue-with-code-manipulating-the-image-upload-thickbox)। मैं वर्डप्रेस के इनबिल्ट छवि अपलोडर मोटीबॉक्स का उपयोग करने की कोशिश कर रहा हूं लेकिन मैं इस मुद्दे में भाग रहा हूं। –

1

मुझे लगता है कि आप हैक कर सकते हैं कि बंद करें बटन के लिए क्लिक करें हैंडलर जुड़ कर:

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

आपके पास एक विकल्प है, तो मोटीबॉक्स से छुटकारा पाएं (क्योंकि यह अब बनाए रखा नहीं गया है) और अधिक सक्रिय समुदाय के साथ कुछ उपयोग करें। मोटाबॉक्स साइट, वास्तव में, proposes some alternativesmirror

+1

मैंने उसे बताने के बारे में सोचा था, लेकिन उसे मोटीबॉक्स को बंद करने के लिए उपयोग किए जाने वाले सभी तत्वों को रिबंड करना होगा (बंद बटन, ओवरले और एस्पेस कीप्रेस पर क्लिक करें) –

+0

लेकिन विकल्प पर +1 :) –

+0

Ah - मुझे यह देखना चाहिए था। यदि यह ब्याज की बात है, तो मुझे यहां से बंद बटन पर हैंडलर विचार क्लिक करें: http: // designerfoo।com/jquery-thickbox-hack-to-refresh-parent-window-on-tb_close-event.html – karim79

-1

आप "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 स्रोत कोड में फ़ंक्शन नहीं है जो मोटेबॉक्स के होम पेज पर इंगित करता है। लेकिन यह वर्डप्रेस के संस्करण में है। इसे इंगित करने से मदद मिल सकती है। साथ ही, यह एक इनपुट तत्व नहीं, मोटाबॉक्स ट्रिगर करने के लिए एक 'तत्व' तत्व है। अंत में, उदाहरण काम नहीं करता है क्योंकि Google इस तरह से लोड होने पर रोक लगाता है। Tb_unload ईवेंट। शायद एक jsfiddle या codepen उदाहरण। –

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

तो जब मैं अपने कस्टम निकालने के फ़ंक्शन का उपयोग करता हूं। मैं इसे इस तरह इस्तेमाल करूंगा।

self.parent.mycustom_tb_remove(function(){ 
    alert("Closed"); 
}); 
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 शुरू हो दो बार तो यह भी शामिल है एक हैक का एक सा सुनिश्चित करें कि आपके कोड दूसरी बार नहीं चलता है बनाने के लिए किया जाता है।

संबंधित मुद्दे

 संबंधित मुद्दे