2011-12-30 8 views
0

私は3つのaタグのhrefをjqueryで変更しようとしています。 現時点では、私は通常のjavascriptでそれを行います。hrefの束をjqueryに置き換えます。コードの改良が必要

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で。

HERESに例 http://jsfiddle.net/HFj2D/1/

+0

これは正しい非膨大なjQuery方法です: '$( '#node> *> a')。each(function(i){this.href = newLink [ i]}); ' –

+0

準備完了... PULL !! – RSG

答えて

2

たくさん私の

THXは、これは全体のことを行う必要があります。

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

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

を理想的には、すでにとにかく<ul>タグのIDを持っている必要がありますしかし、。

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

よろしくお願いします。 alnitakとfelix klingへのthx。 これは最終コードです http://jsfiddle.net/HFj2D/7/ 私はunderperformand .each()を使用しないので、これは本当に良いです。関数 – nazshal

0

単純なJavaScript、つまり最初の3つのリストエントリと最初のa要素。

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

DEMO

+0

あなたのセレクタとコンテキストの引数が間違った方向にあります。 – Alnitak

0

あなたが行く:http://jsfiddle.net/HFj2D/2/

$.each($("#node").find("a"), function(i, link){ 
    $(link).attr("a", newLink[i]); 
}); 
+0

1. "a"とは何ですか? 2. 'link' ===' this'なので、 '$(this).attr( 'href')'ではなく 'this.href'を使用してください。 – Alnitak

+0

良いキャッチ。それはタイプミスです。あなたには全く興味深い質問スレッドで実行可能な答えの海の中でそれをキャッチするための功績: – RSG

+0

彼らは実行可能かもしれないが、それらのうちの2つだけが "正しい" ;-) – Alnitak

1

ちょうどattr[docs]を使用します。

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

私も要素にあなたがやったのと同じ方法を選択しようとしただろう

+0

関数ベースのバージョンの '。 attr' - 私はいつもそれが存在することを忘れています。 – Alnitak

0

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

0

この:あなたはあなたのメニューでaの要素を持っているとして、あなたの配列は、できるだけ多くの新しいリンクが含まれている場合、その後、あなたが選択を簡略化することができ、言っ

catNavノード(既にノードを持っている)の下にあるすべてのリンクを見つけ、それぞれに新しいhrefを割り当てます。

catNav.find('a').each(function(index) { $(this).attr('href', newLink[index]); }) 
関連する問題