That won't work, [0] will give you the DOM element. $('#testlink').attr('href')
jQuery will take care of getting the actual attribute value only. On Jan 26, 12:57 am, brian <bally.z...@gmail.com> wrote: > $('#testlink')[0].attr('href') > > On Sun, Jan 25, 2009 at 9:14 PM, Jumpfroggy <rocketmonk...@gmail.com> wrote: > > > Here's the short version: > > I have a link: > > <a id="testlink" href="page.html">page.html</a> > > > But when I do this: > > alert($('#testlink')[0].href); > > > I get this: > > http://localhost/page.html > > > How do I get the *actual* HREF of the link ("page.html"), and not the > > mangled version? > > > Thanks! > > > ---------- > > > The long version: > > > I have a few links in HTML: > > <a href="/page1.html">/page1.html</a> > > <a href="http://localhost/page1.html">http://localhost/page1.html</ > > a> > > <a href="http://localhost:80/page1.html">http://localhost:80/ > > page1.html</a> > > <a href="http://localhost/page2.html">http://localhost/page2.html</ > > a> > > <a href="http://www.google.com/page1.html">http://www.google.com/ > > page1.html</a> > > > When I do this: > > $("[href]").each(function() { > > var matches = $("[href='" + this.href + "']"); > > console.log("Searching for HREF \"" + this.href + "\", text > > \"" + $(this).html() + "\"" ); > > matches.each(function() { > > console.log("Found: HREF \"" + this.href + "\", text \"" + > > $(this).html() + "\"" ); > > }); > > }); > > > I get this: > > Searching for HREF "http://localhost/page1.html", text "/ > > page1.html" > > Found: HREF "http://localhost/page1.html", text "http://localhost/ > > page1.html" > > Searching for HREF "http://localhost/page1.html", text "http:// > > localhost/page1.html" > > Found: HREF "http://localhost/page1.html", text "http://localhost/ > > page1.html" > > Searching for HREF "http://localhost/page1.html", text "http:// > > localhost:80/page1.html" > > Found: HREF "http://localhost/page1.html", text "http://localhost/ > > page1.html" > > Searching for HREF "http://localhost/page2.html", text "http:// > > localhost/page2.html" > > Found: HREF "http://localhost/page2.html", text "http://localhost/ > > page2.html" > > Searching for HREF "http://www.google.com/page1.html", text > > "http://www.google.com/page1.html" > > Found: HREF "http://www.google.com/page1.html", text "http:// > >www.google.com/page1.html" > > > The problem is that elem.href is returning a mangled version of the > > HREF, but the [href='...'] selector requires the URL exactly as it is > > written in the HTML. So when an element has "/page.html" as it's > > HREF, doing elem.href returns "http://localhost/page.html" instead. > > So to search for the "/page.html" HREF, I have to search for: > > [href='page.html'] > > [href='/page.html'] > > [href='http://localhost/page.html'] > > [href='http://localhost:80/page.html'] > > [href='https://localhost/page.html'] > > [href='https://localhost:443/page.html'] > > > Where "localhost" and "80" must be determined by javascript at runtime > > to reflect the current server and port. Also, the "/page.html" and > > "page.html" are not comprehensive. The javascript would also have to > > check for all permutations of "../page.html", "folder/../page.html", > > etc. The root of the problem here is this: how can I get the > > *actual* HREF of a link via javascript, and not the mangled version?