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?

Reply via email to