2009-07-04 14 views
0

はどのように私はjQueryを介して電流のリンクを選択することができ、現在のリンクを選択します。私が試したノート私はこのようなdiv要素を持っている場合

<div id='navigation'> 
    <a href='users/home'>home</a> | 
    <a href='projects/browse'>home</a> 
    <a href='discussions/browse'>home</a> 
    <a href='search/dosearch'>home</a> 
</div> 

$(document).ready(function(){ 
    $("#navigation a").click(function(event) 
    { 
     var clicked = $(this); // jQuery wrapper for clicked element 
     // ... click-specific code goes here ... 
     clicked.addClass('selected'); 
    }); 
}); 

をしかし、私はリンクをクリックしたときそれはリンクを選択し、クラス.selectedを追加しますが、ページに移動するためにページをリロードし、それからすべてが消えます。任意のヒント?

おかげ

+0

divの仕組みがわからない場合は、htmlの前後に空白行を残して、それを正しく表示するように少なくとも4つの空白でインデントしてください。 – glmxndr

答えて

5

これは動作するはずです:

それは基本的にナビゲーション項目をループし、現在のページのURLがアンカーのhrefが含まれている場合、それはアンカーにクラスselectedを追加します。

+0

はい、リンクに添付されているデフォルトのイベントは引き続き有効になるため、ページはリロードされます。 – glmxndr

+1

そうだけど、(私が理解したように)質問は現在のリンクを選択する方法であり、現在のページにとどまる方法ではありませんでした。私は正しいかどうかわからない。 – moff

+0

@Moff - それはコードのすてきな部分です –

1

うん、あなたclick()コールバックの引数からイベントを取り、(thereを参照)e.preventDefault();を使用しています。

またはreturn false

または、ブラウザに別の場所でリンクを開く場合は、target='_blank'属性をリンクに追加して、他のページやタブでリンクを開くようにします。

0
$(document).ready(function(){ 
    $("#navigation a").click(function(event) 
    { 
     var clicked = $(this); // jQuery wrapper for clicked element 
     // ... click-specific code goes here ... 
     clicked.addClass('selected'); 
     return false; 
    }); 
}); 

return falseを忘れないでください!

関連する問題