заменив группу href на jquery.нужно просто улучшить код - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь изменить href из 3 a-тегов с помощью jquery.На данный момент я делаю это с обычным JavaScript.

var catNav = $('ul.nav'),
newLink = ['new1/','new2','nwe3/'];

catNav.attr('id','node');
var node =document.getElementById('node');
for(var i=0; i<3; i++){
node.childNodes[i].firstChild.href=newLink[i];
}

что я хочу от тебя.просто научи меня, как я делаю это

for(var i=0; i<3; i++){
    node.childNodes[i].firstChild.href=newLink[i];
}

с помощью jquery.

вот пример http://jsfiddle.net/HFj2D/1/

Ответы [ 6 ]

2 голосов
/ 30 декабря 2011

Это должно сделать все:

var newLink = ['new1/','new2','nwe3/'];

$("ul.nav").attr('id', 'node').find('a').each(function(index, el) {
    this.href = newLink[index];
});

В идеале, в любом случае, у вас должен быть идентификатор на теге <ul>.

1 голос
/ 30 декабря 2011

Это найдет все ссылки под узлом catNav (у вас уже есть узел) и назначит новый href для каждого.

catNav.find('a').each(function(index) { $(this).attr('href', newLink[index]); }) 
1 голос
/ 30 декабря 2011

Просто используйте attr [документы] :

$('ul.nav > li').slice(0,3).children('a:first-child').attr('href', function(i) {
    return newLink[i];
});

Я также пытался выбрать элементы так же, как вы это делали с простым JavaScript, то есть первые три записи списка и первый элемент a.

Тем не менее, если ваш массив содержит столько новых ссылок, сколько у вас есть a элементов в вашем меню, то вы можете упростить выбор до:

$('ul.nav a').attr('href', /*...*/);

DEMO

0 голосов
/ 30 декабря 2011

$(node).find('li a').each(function() { $(this).attr('href', 'newlink'); });

0 голосов
/ 30 декабря 2011

Вот, пожалуйста, http://jsfiddle.net/HFj2D/2/

$.each($("#node").find("a"), function(i, link){
  $(link).attr("a", newLink[i]);
});
0 голосов
/ 30 декабря 2011

Это будет:

for(var i=0; i<3; i++){
    $(node, ':nth-child(' + i + ')').children().first().attr('href', newLink[i]);
}
...