Right, it's not hard, it was just unexpected is all. I guess I've
gotten used to JQuery working the same in all browsers.

I've got it working now with some old-fashioned Javascript. Thanks!

On Mar 25, 3:20 pm, Shane Riley <shanerileydoti...@gmail.com> wrote:
> Alright, so your example shows the actual strings for all three values
> in Safari, and in IE7(Vista) it shows the absolute path for #3. After
> looking back at my code, I'm actually loading in the links via Ajax
> when the page is loaded, so they're not in the original document. So
> I'm guessing that means having to do string manipulation since there's
> no way to grab the actual href string in IE in this case.
>
> Thanks for putting up an example.
>
> On Mar 25, 3:11 pm, Karl Swedberg <k...@englishrules.com> wrote:
>
> > Hi Shane,
>
> > Yes, I believe you're reading me right. Strange, though. I'm not able  
> > to reproduce the problem you're having. Take a look here:
>
> >http://test.learningjquery.com/href.html
>
> > In IE 7 for #1 and #2 $(this).attr('href') is reporting the actual  
> > text string of the href attribute while this.href is reporting the  
> > fully qualified URL. For #3, in which I injected the link with  
> > javascript, they're both reporting the fully qualified URL.
>
> > Which version of IE are you testing in?
>
> > --Karl
>
> > ____________
> > Karl Swedbergwww.englishrules.comwww.learningjquery.com
>
> > On Mar 25, 2009, at 2:21 PM, Shane Riley wrote:
>
> > > Karl, I'm pretty sure I'm reading you right, but are you saying that
> > > by all accounts JQuery should account for this and return the string-
> > > literal value of href and not IE's absolute path? If so, it's not
> > > working properly. I wish I could show you the live code, because it's
> > > probably easier to visualize, but here's the process involved in these
> > > specific anchors appearing before manipulation:
> > > 1. User visits page
> > > 2. User makes selection from a drop-down
> > > 3. Ajax call initialized sending the href attribute as the variables
> > > using a POST request
>
> > > So in this case, the anchors in the drop-down list are present on page
> > > load and part of the initial DOM structure. That means that if JQuery
> > > is supposed to sort this out for me, it's not. If you meant that I'd
> > > absolutely have to use Javascript's getAttribute(), then I'll try that
> > > and see if it works.
>
> > > On Mar 25, 1:17 pm, Karl Swedberg <k...@englishrules.com> wrote:
> > >> Hi Shane,
>
> > >> IE has a second "flag" argument for getAttribute that, when set to 2,
> > >> is supposed to get the literal value of the attribute rather than
> > >> their special-sauce value.
>
> > >> So, this.getAttribute('href', 2) *should* get the relative href.
> > >> (note: no need to do $(this)[0] ; this works just fine)
>
> > >> jQuery uses that flag internally, so .attr('href') should do the same
> > >> thing:
>
> > >>                        var attr = !jQuery.support.hrefNormalized &&  
> > >> notxml && special
> > >>                                        // Some attributes require a  
> > >> special call on IE
> > >>                                        ? elem.getAttribute( name, 2 )
> > >>                                        : elem.getAttribute( name );
>
> > >> I believe that this works in every case except when the href is set
> > >> via JavaScript. In that case, I'm not sure anything can be done.
>
> > >> --Karl
>
> > >> ____________
> > >> Karl Swedbergwww.englishrules.comwww.learningjquery.com
>
> > >> On Mar 25, 2009, at 12:21 PM, Shane Riley wrote:
>
> > >>> Ha! I looked at your post too fast, and didn't notice that it was  
> > >>> pure
> > >>> Javascript. Sorry. I'll try it and see.
>
> > >>> The way I currently have it will not work with javascript turned off
> > >>> either. I'm doing it this way only because the client is requiring  
> > >>> the
> > >>> user to have Javascript enabled to use the site (it's a backend  
> > >>> system
> > >>> for very specific clients). They want to add all sorts of animations
> > >>> and effects like everyone wants to do once they see JQuery  
> > >>> animations
> > >>> in action.
>
> > >>> On Mar 25, 12:14 pm, Martijn Houtman <martijn.hout...@gmail.com>
> > >>> wrote:
> > >>>> On Mar 25, 2009, at 5:04 PM, Shane Riley wrote:
>
> > >>>>> Thanks for the article link, but your proposed change isn't valid
> > >>>>> JQuery, is it? My exact jQuery code to read in the value looks  
> > >>>>> like
> > >>>>> this:
> > >>>>> pageID = $(this).attr("href");
> > >>>>> Adding what you suggested to make it $(this)[0].attr("href") will
> > >>>>> not
> > >>>>> do anything apart from force the link to be followed.
>
> > >>>> Well, no. I suggested using:
>
> > >>>> pageID = $(this)[0].attr;
>
> > >>>> This is plain JavaScript, rather than using jQuery's attr()  
> > >>>> function.
> > >>>> As the article suggests, this works cross-browser.
>
> > >>>>> I think I'm going to have to move the contents of href to rel
> > >>>>> instead.
>
> > >>>> Well, you could, but I wouldn't; this is not what the rel attribute
> > >>>> is meant for. Besides, it would break the anchor when JavaScript is
> > >>>> turned off.
>
> > >>>> Regards,
> > >>>> --
> > >>>> Martijn.

Reply via email to