2016-08-11 20 views
1

jQueryを使用しているときに問題が発生しています。私のプログラムは、CSSクラスcurrentをクリックしたときに自分のnavbarのリンクに与え、そのクラスの以前の所有者からクラスを削除することを目的としています。jQueryプログラムが動作しない

私はJavaScriptの中で非常に経験が不足しています。学校の割り当てのために数分間で取り上げるだけです。スクリプトは単純に何もしません。

マイコード:

$(document).ready(function() { 
    $('a').click(function(i){ 
     var $current = $('a.current'); 
     $(this).addClass('current'); 
     $current.removeClass('current'); 
    }); 
}); 

編集1:私は、リンクをクリックして、代わりに文書をクリックしないと、奇妙なバグは、現在のクラスは、文書全体に適用されます。

+0

問題は何ですか? – brk

+0

移動した後でクラスをページに適用したいですか?または、リンクは実際にはどこにも指していないのですか? –

+0

トピックはすでに回答済みですが、議論のために、リンクはどこかを指しています、彼らは私のnavbarの一部です。私はリンクがクリックされたときにクラスを適用したい。 –

答えて

2

最初にclassを削除してから追加する必要があります。そうでない場合は、clickanchorを2回入力するとclassが追加されません。

$(function() { 
    $('a').click(function() { 
     $('a.current').removeClass('current'); 
     $(this).addClass('current'); 
    }); 
}); 
+0

回答ありがとう –

+0

ようこそ@JamesBalajan! – eisbehr

0

これを試してみてください:

$current.removeClass('current'); 
$(this).addClass('current'); 

あなたはまず、アクティブなクラスを削除し、現在の要素の現在のクラスを追加する必要があります。

0

現在のところ、<a>タグをすべてターゲティングしているため、ナビゲーションバーのリンクにのみ影響するようにコードを絞り込む必要があります。このコードで

var navLink = $('.nav a'); 

navLink.on('click', function(e){ 
    navLink.removeClass('current'); 
    $(this).addClass('current'); 
}); 

、変数は、ナビゲーションリンクのすべてのインスタンスを取得し、そのうちの一つをクリックすると、クリックされた1にそれを追加する前に、すべてのリンクから現在のクラスを削除します。

このjsfiddleはあなたの行動を示します:https://jsfiddle.net/td48vcqy/

+0

ありがとう、これは非常に参考になった、あなたのコードの唯一の問題です。私はそれが $( 'a.nav')であることを意味していたと思う。 $( '。nav a')ではありません。 –

+0

あなたのコードをあなたのナビに特有のものにする方法の例として、これを使用しました。理想的には、使用できるリンクの周りに、またはリンク自体に正しいアイテムを選択するためのクラスがあります。 –

関連する問題