views:

929

answers:

3

All,

I am using JQuery UI tabs. When a tab is clicked, I want the tab to show the tab title along with a spinner animated gif next to it. When the tab is loaded, the image should hide. How can I achieve this?

Thanks

+1  A: 

Firstly, I would highly recommend generating the spinner gif from http://www.ajaxload.info/ as they have some really great ones for free.

Next, if you look at the documentation for JQuery UI Tabs, you'll note that you can setup an function to be called on different events. For instance, you could use the select and load events to display it (although I'm not sure how to put it inside of the tab, I'll leave that up to you):

$('#my_tabbed_area').tabs({
  select: function(event, ui) { $('#my_spinner_tab_1').fadeIn() },
  load:   function(event, ui) { $('#my_spinner_tab_1').fadeOut() }
});

If you can put the spinner and the title in the same span, then you would need to replace #my_spinner_tab_1 with #my_span_tab_1 or whatever id you choose to use. However, this would fade in/out both the title and the spinner.

Topher Fangio
A: 

Is it not possible to modify ui.tabs.min.js -> "spinner" part to keep the tab name and include a background spinner image?

Balu
That's almost certainly possible. If you want to dig around in the source code and change it, feel free, however, that means that you can't update to the latest version when it is released unless you plan on merging all of your changes in with theirs. I usually find it best to see if you can extend their system without touching their code.
Topher Fangio
A: 

Add spinner option to tabs()

$("#tabs").tabs({
    spinner: '<img src="whatever.gif" />'
});


Add <span>&nbsp;</span> within <a></a> for each tab. &nbsp; is required for the spinner to properly appear and disappear.

<li><a href="urlheretoajaxload">Text Title<span>&nbsp;</span></a></li>
Paul