You can also try this: $('#testlink')[0].getAttribute('href');
Returns whatever is in your href... ---- Read jQuery HowTo Resource - http://jquery-howto.blogspot.com On Mon, Jan 26, 2009 at 7:14 AM, 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? >