in your case you can use: $('span[id^sp_span]') to get all span with id starting with sp_span then you can get the id when is clicked
$('span[id^sp_span]').click(function(){ var spanID = $(this).attr('id').split('_')[1] ;will give you span1, span2 etc $('#'+spanID).slideToggle(slideSpeed); }); On Jul 25, 4:37 pm, Blake <stickynote...@gmail.com> wrote: > On my site, I have some click-able spans (will be referred to as > toggle spans) that show or hide other spans (that contain the content > I want on my site; will be referred to as content spans). The layout > of these spans is like this: > > ---------- > <span id="sp_span1">Span 1</span> - <span id="sp_span2">Span 2</span> > - <span id="sp_span3">Span 3</span> > > <span class="contentSpan" id="span1"> > <p>Span 1 content.</p> > </span> > > <span class="contentSpan" id="span2"> > <p>Span 2 content.</p> > </span> > > <span class="contentSpan" id="span3"> > <p>Span 3 content.</p> > </span> > ---------- > > Then, in my jQuery I have something like this: > > ---------- > slideSpeed=1000; > > $("span#sp_span1").click(function () { > $("span#span1").slideToggle(slideSpeed); > $("span.contentSpan:not(#span1)").slideUp(slideSpeed); > > }); > > $("span#sp_span2").click(function () { > $("span#span2").slideToggle(slideSpeed); > $("span.contentSpan:not(#span2)").slideUp(slideSpeed);}); > > ---------- > > and so on for each separate content span. What the above code does is: > for example, when toggle span 1 is clicked on, content span 1 opens if > it is not open, and if content span 2 or 3 is open, that content span > is closed and content span 1 is opened. (If that doesn't make sense, I > apologize, and a download-able example can be found > here:http://willhostforfood.com/access.php?fileid=76513) > > This method works perfectly fine, but to make it easier for me to add > more content spans, I would like to use a for loop that will > automatically enter all that for me. > > What I would like to do in my jQuery is use an array that will contain > the IDs of all the different content spans I want to have displayed on > the page. Then, a for loop will enter the appropriate information > (identical to the code above). I've tried many things, but I cannot > get this to work. Here's kind of what I have: > > ---------- > sections=new Array("span1","span2","span3"); > > for (i=0;i<sections.length-1;i+=1) { > $("span#"+sections[i]).click(function() { > $("span#"+sections[i]).slideToggle(slideSpeed); > //$("span.contentSpan:not(attr('id')==sections[i])").slideUp > (slideSpeed);}); > } > > ---------- > > That doesn't work, though. What I need to do is get the value of > sections[i] and use that in the element bit of the code. > > Any ideas? If you need more information, please ask. > > Thanks! > Blake