Solved

Jquery Simple tabs

Posted on 2010-08-24
1
445 Views
Last Modified: 2013-11-11
Hi,
I have to do a highly customized tabbed interface. I *dont* want to use the Jquery ui tabs - they're nice, but I need to do my own.
I am looking for ideas on how to implement this.

I am going to do something like:

<div class="tabs">
  <ul>
      <li><a class='tab1_link' href='#'>Tab 1</a></li>
      <li><a class='tab2_link' href='#'>Tab 2</a></li>
      <li><a class='tab3_link' href='#'>Tab 3</a></li>
  </ul>
  <div class='tab1' >content for tab 1</div>
  <div class='tab2' >content for tab 2</div>
  <div class='tab3' >content for tab 3</div>
</div>

Open in new window



$('.tab2').hide();
$('.tab3').hide();

$('.tab1_link').click(function(e){
  $('.tab1').show()
  $('.tab1').siblings().hide()
  e.preventDefault();
})

$('.tab2_link').click(function(e){
  $('.tab2').show()
  $('.tab2').siblings().hide()
  e.preventDefault();
})

$('.tab3_link').click(function(e){
  $('.tab3').show()
  $('.tab3').siblings().hide()
  e.preventDefault();
})

Open in new window


This is just my initial idea, the problem is that it doesnt scale - for every link I'd have to write a new function. The problem is that I don't know how to match a tabs link to a particular content div in a programmatic way.

Can anyone suggest a better way of achieving the above??

Cheers
John



0
Comment
Question by:jdav357
1 Comment
 
LVL 15

Accepted Solution

by:
SRigney earned 500 total points
ID: 33511217
The way to match tab links to divs is to use the rel attribute of the anchor tag and the id of the div.



This should work as a rough version.   You'd probably want to add styling so it's clear which tab is selected and which ones are not.
<div class="tabs">

  <ul>

      <li><a class='tab_link' rel='tab1' href='#'>Tab 1</a></li>

      <li><a class='tab_link' rel='tab2' href='#'>Tab 2</a></li>

      <li><a class='tab_link' rel='tab3' href='#'>Tab 3</a></li>

  </ul>

  <div id='tab1' class='tab'>content for tab 1</div>

  <div id='tab2' class='tab'>content for tab 2</div>

  <div id='tab3' class='tab'>content for tab 3</div>

</div>



$('tab_link').click(function(e){

  $this = $(this);  // this is the link that was clicked.

  // hide all tabs.

  $(".tab").hide();

  $('#' + $this.attr('rel').val() ).show();  // show the clicked tab.

  e.preventDefault();

})

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Requirements JQuery 1.6+ HTML CSS Introduction This article was inspired by an EE question (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28372511.html) on how to make a page show some balloons animate up a page…
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now