Using jQuery UI Tabs. How would I make one of the tabs link to a URL rather than load a tab panel?

16,884

After your .tabs() call you can reverse the click behavior and href it changed, putting the href back like this:

$("li.last a").unbind('click').click(function() {
  this.href = $.data(this, 'href.tabs');​​​​
});

You can give it a try here.

Update: Using newer versions of jQuery:

There is no need to add a click handler once you unbind jQuery-UI's click handler from the link you want to change. This will work:

$("li.last a").unbind('click');
Share:
16,884
Admin
Author by

Admin

Updated on June 06, 2022

Comments

  • Admin
    Admin almost 2 years

    I am using jQuery UI tabs to create a vertical tab section of a page, and want the last vertical tab to link out to a URL rather than load a tab panel.

    Any suggestions for the best way to do this? I can stick another element besides an LI into the list, but would rather have the last li just behave differently.

    Thanks for any help.

    Here's my javascript:

      // vtabs
      $("#aboutprod-tabs").tabs(
        { fx: [{opacity:'toggle', duration:'normal'},
        {opacity:'toggle', duration:'fast'}] })
        .addClass('ui-tabs-vertical'); 
    

    And HTML

    <div id="aboutprod-tabs">
      <ul>
        <li><a href="#tabs-1">First</a></li>
        <li><a href="#tabs-2">Second</a></li>
        <li><a href="#tabs-3">3rd</a></li>
        <li class="last"><a href="/products">Learn more...</a></li>
      </ul>
      <div id="tabs-1">
        Tab panel 1
      </div>
      <div id="tabs-2">
        Tab panel 2  
      </div>
      <div id="tabs-3">
        Tab panel 3
      </div>
    </div>
    
  • Spectre87
    Spectre87 over 11 years
    To make this work with jQuery 1.8.2/jQuery UI 1.9.0, just use $("li.last a").unbind('click'). The example in the answer worked great for earlier versions of jQuery, but for some reason the added click handler was messing things up in the latest version.
  • The Maniac
    The Maniac over 11 years
    Alex is absolutely correct, this answer should be edited to include this information.
  • Codeguy007
    Codeguy007 about 11 years
    I know this question is older but I thought this was an important note. If you are looking to go to an external link instead of just load one you need a click handler and it's working fine for me with jquery-ui-1.10.3. Instead of this.href, you replace it with Location.href. In my case I wanted to make a tab a logout button.
  • James Moberg
    James Moberg almost 11 years
    I couldn't get this code to work... I had to use: $("li:last a").unbind('click'); To only affect the tab, I used: $('#tabID > ul > li:last a').unbind('click');
  • Arin Chakraborty
    Arin Chakraborty about 10 years
    You saved a whole lot of Trouble. Thanks a lot.
  • Jamie M
    Jamie M about 10 years
    Thanks- this helped out a lot. @JamesMoberg - I just gave the tab in question an id, such as <a id="mapLink" href="...">Site Map</a>. then all i needed was $("#mapLink").unbind('click');
  • David Harkness
    David Harkness about 8 years
    Using jQuery UI 1.8.16, I had to change the added click event to instead use each to reassign the href from the data attribute, but then it worked.
  • jave.web
    jave.web over 7 years
    where is this documented? api.jqueryui.com/tabs currently does not say anything about this for tabs...
  • partkyle
    partkyle over 7 years
    This is something that may have been valid in 2010 when I wrote this, but I haven't kept up with jQuery, so I'm not sure. Good Luck.
  • jave.web
    jave.web over 7 years
    thanks for the info, in the end I ended up making my own "tabs" little-script, because I also didn't want the styling, so I solved 2 problems in one short soulution - stackoverflow.com/a/39621077/1835470