Reputation: 73
i have 4 links and i need to change the href attribute in a rel attribute. i know i cannot do it so i'm trying to get the data from the href attribute, setting a new attribute (rel), inserting the data inside it and then removing the href attibute.
basically i'm doing this:
$('div#menu ul li a').each(function(){
var lin = $(this).attr('href');
$('div#menu ul li a').attr('rel',lin);
$(this).removeAttr('href');
})
})
it works but it sets the same rel data in every link i have.
any help?
Upvotes: 4
Views: 30501
Reputation: 372
this is the problem
$('div#menu ul li a').attr('rel',lin);
this line apply changes to any element matches your selector, which in your case will match the four links --use this code instead
$('div#menu ul li a').each(function(){
var lin = $(this).attr('href');
$(this).attr('rel',lin);
$(this).removeAttr('href');
})
})
Upvotes: 0
Reputation: 1073
Here is a solid jquery solution:
$(function() {
$("a.selector").on("click", function() {
var trigger = $(this.hash);
trigger.removeAttr("id");
window.location.hash = this.hash;
trigger.attr("id", this.hash.replace("#",""));
return false;
});
});
Upvotes: 0
Reputation: 41
$('div#menu ul li a').each(function(){
var lin = $(this).attr('href');
$(this).attr('rel',lin);
$(this).removeAttr('href');
});
Upvotes: 4
Reputation: 89322
You are probably doing "it" wrong. (meaning there is a better way to do what you are attempting).
but to just answer your question:
$('#menu ul li a').each(function(){
var lin = $(this).attr('href');
$(this).attr('rel',lin).removeAttr('href');
});
Upvotes: 0
Reputation: 16914
Change:
$('div#menu ul li a').attr('rel',lin);
To:
$(this).attr('rel',lin);
Upvotes: 2
Reputation: 451
Try
$('div#menu ul li a').each(function(){
var lin = $(this).attr('href');
$(this).attr('rel',lin);
$(this).removeAttr('href');
})
})
Haven't actually ran the code...but that looks like it should do the trick.
Upvotes: 2