[jQuery] Xpath and tab selection
So I have a tabbed navigation system, and I am using jquery to auto-select the current tab. Here's the html: ul id=main_nav li /services/ SERVICES /li li /store/ STORE /li li /about-us/ ABOUT US /li li /gallery/ GALLERY /li li /press/ PRESS /li /ul Here's my jQuery code (adapted from http://leftlogic.com/info/articles?id=1): if (location.pathname.substring(1)) { $('#main_nav [EMAIL PROTECTED]' + location.pathname.substring(1) + ']').parent().attr('id', 'current'); } I'm using parent() so that the id gets applied to the 'li' element and not the 'a' element. All of this works. However, I'm unclear about a couple of things: First, why is the dollar sign $ necessary in the xpath statement? i've seen no documentation on it, and when i try it without the dollar sign, it doesnt work. Second, Sometimes I have a url like: /about-us/4/3 and my jQuery statement fails because the href != location.pathname. How can i rewrite this statement so that it searches for the href value in the location.pathname value and applies the id to the matching string? Thanks in advance, dd -- View this message in context: http://www.nabble.com/Xpath-and-tab-selection-tf2563069.html#a7143657 Sent from the JQuery mailing list archive at Nabble.com. ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/
Re: [jQuery] Xpath and tab selection
Darius, $= means attribute ends with. Check out http://jquery.com/docs/Base/Expression/CSS/ , the Supported, but different section. Taking a close look at the selection documentation might also help you with item #2 a bit. You're going to have to figure out how to text-match your relative URL with the absolute URL that will be in location.pathname using plain old regular expressions. Keep in mind that IE automatically converts relative URLs to absolute ones in memory, while the other browsers don't. This may affect your results. - Brian So I have a tabbed navigation system, and I am using jquery to auto-select the current tab. Here's the html: ul id=main_nav li /services/ SERVICES /li li /store/ STORE /li li /about-us/ ABOUT US /li li /gallery/ GALLERY /li li /press/ PRESS /li /ul Here's my jQuery code (adapted from http://leftlogic.com/info/articles?id=1): if (location.pathname.substring(1)) { $('#main_nav [EMAIL PROTECTED]' + location.pathname.substring(1) + ']').parent().attr('id', 'current'); } I'm using parent() so that the id gets applied to the 'li' element and not the 'a' element. All of this works. However, I'm unclear about a couple of things: First, why is the dollar sign $ necessary in the xpath statement? i've seen no documentation on it, and when i try it without the dollar sign, it doesnt work. Second, Sometimes I have a url like: /about-us/4/3 and my jQuery statement fails because the href != location.pathname. How can i rewrite this statement so that it searches for the href value in the location.pathname value and applies the id to the matching string? Thanks in advance, dd -- View this message in context: http://www.nabble.com/Xpath-and-tab-selection-tf2563069.html#a7143657 Sent from the JQuery mailing list archive at Nabble.com. ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/ ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/
Re: [jQuery] Xpath and tab selection
Thanks a bunch for that link, Brian. I really did search the documentation, and I feel crazy for missing that rather obvious link from the XPath section. I ended up going the less-than-elegant route and breaking out of jQuery to use the JS match() function, but it works nicely: if (location.pathname.substring(1)) { $('#main_nav').find('a').each( function() { if(location.pathname.match( $(this).attr('href') ) ) $(this).parent().attr('id', 'current'); }); } Cheers! dd Citrus wrote: Darius, $= means attribute ends with. Check out http://jquery.com/docs/Base/Expression/CSS/ , the Supported, but different section. Taking a close look at the selection documentation might also help you with item #2 a bit. You're going to have to figure out how to text-match your relative URL with the absolute URL that will be in location.pathname using plain old regular expressions. Keep in mind that IE automatically converts relative URLs to absolute ones in memory, while the other browsers don't. This may affect your results. - Brian So I have a tabbed navigation system, and I am using jquery to auto-select the current tab. Here's the html: ul id=main_nav li /services/ SERVICES /li li /store/ STORE /li li /about-us/ ABOUT US /li li /gallery/ GALLERY /li li /press/ PRESS /li /ul Here's my jQuery code (adapted from http://leftlogic.com/info/articles?id=1): if (location.pathname.substring(1)) { $('#main_nav [EMAIL PROTECTED]' + location.pathname.substring(1) + ']').parent().attr('id', 'current'); } I'm using parent() so that the id gets applied to the 'li' element and not the 'a' element. All of this works. However, I'm unclear about a couple of things: First, why is the dollar sign $ necessary in the xpath statement? i've seen no documentation on it, and when i try it without the dollar sign, it doesnt work. Second, Sometimes I have a url like: /about-us/4/3 and my jQuery statement fails because the href != location.pathname. How can i rewrite this statement so that it searches for the href value in the location.pathname value and applies the id to the matching string? Thanks in advance, dd -- View this message in context: http://www.nabble.com/Xpath-and-tab-selection-tf2563069.html#a7143657 Sent from the JQuery mailing list archive at Nabble.com. ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/ ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/ -- View this message in context: http://www.nabble.com/Xpath-and-tab-selection-tf2563069.html#a7145094 Sent from the JQuery mailing list archive at Nabble.com. ___ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/