junray
junray

Reputation: 73

jquery change attribute

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

Answers (6)

Peter Isaac
Peter Isaac

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

rkingon
rkingon

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

hellYEAH
hellYEAH

Reputation: 41

$('div#menu ul li a').each(function(){
    var lin = $(this).attr('href');
    $(this).attr('rel',lin);
    $(this).removeAttr('href');
});

Upvotes: 4

David Murdoch
David Murdoch

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

awgy
awgy

Reputation: 16914

Change:

$('div#menu ul li a').attr('rel',lin);

To:

$(this).attr('rel',lin);

Upvotes: 2

E-man
E-man

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

Related Questions