On 28/11/06, "Jörn Zaefferer" <[EMAIL PROTECTED]> wrote:
> > > New to jQuery, and I'm trying to use it to set my external links to open
> > a
> > > new window without using any attributes to  mark the external links.  I
> > can
> > > do this with regular js, using a.href.match, but I can't get it to work
> > with
> > > jQuery.  Tried various directions, but no go.
> > >
> > > Sure I'll feel pretty stupid when this is answered, but here is my ugly,
> > > non-functioning code:
> > >
> > > $(function(){
> > >     if ($!("a").href.match("http://www.internal.com";)) {
> > >         $("a").click(
> > >              function() {
> > >                  window.open(this.href); return false;
> > >                  console.log("external");
> > >              };
> > >         );
> > >     };
> > > });
> >
> > This may work (untested), grabs all anchors that don't begin with http
> > (internal links should be referred to using '../../foo.html' or
> > '/bar.jpg'):
> >
> > $("a").not("[EMAIL PROTECTED]").click(
> >     function(){
> >         window.open(this.href);
> >         console.log('external');
> >         return false;
> >     }
> > )
> >
> > $("a:[EMAIL PROTECTED]") may also work.
>
> When testing, keep in mind that browsers behaviour with href attributes is 
> quite inconsistent. While some return only the value as found in the markup, 
> others add the domain and protocol.
> --

So perhaps an additional check is needed, i.e. use location.hostname?

$("a").not("[EMAIL PROTECTED]").click(
    function(){
        if(this.href.indexOf(location.hostname) == -1) {
                window.open(this.href);
                console.log('external');
                return false;
        }
    }
)

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to