Question

I'd like to ask somthing that maybe is wrong, but I not sure.

Is there a way to know when a specific function is executed, in order to run a sample of code? I like to make it like an event.

The problem I have is the thick box. I like to resize the thickbox according to the image that display.

To do so, I need to know when the thick box is executed.

Any idea please ?

Was it helpful?

Solution

Thickbox use global function, so you could do below: (As @alex suggested.)

(function($) {
    var original = tb_show;
    tb_show = function () {
        $(document).trigger('tb_show');
        return original.apply(this, arguments);
    }
})(jQuery);

Then you could bind the event:

$(document).bind('tb_show', function() {
    //event handler
});

OTHER TIPS

You could overload the thickbox plugin invocation.

I'm going to assume it is called on a collection with thickbox(), e.g. $('.container img').thickbox().

(function($) {

    var original = $.fn.thickbox;

    $.fn.thickbox = function() {
        // Whatever you need to do here.
        return original.apply(this, arguments);
    }

})(jQuery);

Now, when you call...

$('.container img').thickbox()

...the code will call your new function before handing the control over to the original function.

You can do whatever you want where it says // Whatever you need to do here. :)

I am not a JS developer but you can create a callback function and make it execute when that specific function is executed.

You can find a good explanation here: JavaScript Callback Scope

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top