Side navigation
#9684 closed bug (invalid)
Opened June 28, 2011 03:09PM UTC
Closed June 28, 2011 05:45PM UTC
.attr() or .prop() to change target on a link not working
Reported by: | lukas@numerique.ca | Owned by: | lukas@numerique.ca |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | selector | Version: | 1.6.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I'm trying to change the target property of all my external links so that everything that isn't on the same domain has an automatic target="_blank" added to it, but I keep getting a javascript error message. After searching, it seems that "target" isn't included in neither .attr() nor .prop().
This used to work in previous versions of JQuery.
Here's the code I'm using (I tried both with .attr() and .prop() and neither worked) :
$("a[href^='http:'],a[href^='https:']").not("[href*=" + location.hostname + "]").prop('target','_blank').not(":has(img)").not("[id]").after('<img src="/Images/Icones/icone_externe.gif" width="12" height="12" alt="external link" style="margin-left:3px;"/>');
Attachments (0)
Change History (5)
Changed June 28, 2011 03:30PM UTC by comment:1
component: | unfiled → attributes |
---|---|
owner: | → lukas@numerique.ca |
status: | new → pending |
Changed June 28, 2011 03:51PM UTC by comment:2
Here's the code I tried :
http://jsfiddle.net/germLukas/nPXcT/
I wasn't able to make it work... it doesn't seem to add neither the target nor the icon (but in my tests on my pages, it does add the icon when I remove the prop('target', '_blank') code). Am I doing anything wrong? It really is a simple script and it's been working for a while with all previous versions.
Changed June 28, 2011 04:45PM UTC by comment:3
component: | attributes → selector |
---|---|
priority: | undecided → low |
I don't think this is an issue with attr or prop: http://jsfiddle.net/timmywil/nPXcT/3/
I think what may be happening is the selection is not collecting your element. The culprit may be that in
.not("[href*=" + location.hostname + "]")
the href should be quoted...
.not("[href*='" + location.hostname + "']")
log out your selection and let us know
Changed June 28, 2011 05:13PM UTC by comment:4
It worked...! Thanks!! Since which version do we have to put it in quotes? It used to work great untill now...
Thanks for the help!
Changed June 28, 2011 05:45PM UTC by comment:5
resolution: | → invalid |
---|---|
status: | pending → closed |
@germLukas It has always been in the documentation that quotes are mandatory(http://api.jquery.com/attribute-equals-selector/). This improves the performance of the selector engine and has been more strictly enforced since 1.5 I believe. Thanks for your quick response.
Thanks for taking the time to contribute to the jQuery project! Please provide a reduced jsFiddle test case to help us assess your ticket!
Additionally, be sure to test against the jQuery Edge version to ensure the issue still exists. To get you started, I've created this boilerplate: http://jsfiddle.net/rwaldron/da3nM/ Open the link and click to "Fork" in the top menu.