2016-09-20 13 views
0

基本的にクラス名とリンクのクラス名と同じidを持つdivを持つコンテナがあります。リンクのクラス名と同じIDを持つターゲットdivにクラス名でリンクします

<ul> 
    <li><a class="table-names">Names</a></li> 
    <li><a class="table-addresses">Addresses</a></li> 
    <li><a class="table-phone">Phone Numbers</a></li> 
</ul> 

<div class="container"> 
    <div id="table-names" class="selected">...</div> 
    <div id="table-addresses">...</div> 
    <div id="table-phone">...</div> 
</div> 

私はselectedが追加されたクラスを持つように、リンク、「テーブル名」にid="table-names"ニーズをクリックして、兄弟はクラスを削除「を選択」する必要がある場合。私はコードが正しいと信じるが、これは何とか動作していない

$('ul li a').click(function() { 
    $(this).parent('li').addClass("selected").siblings("li").removeClass("selected"); 
    $('.container div').removeClass("selected"); 
    $('#' + $(this).className()).addClass("selected"); 
}); 

は、ここに私のjQueryの。私は間違って何をしていますか?

+1

は '$(this).attr( 'class')'を使用してアンカーにクラスが1つしかないことを確信しています – guradio

+0

ありがとうございます。 –

+0

仲間を助けてうれしいです:) – guradio

答えて

2

$(this).className()が有効ではありません、あなたはclassNameがある$(this).attr('class')またはthis.className

$('ul li a').click(function() { 
    $(this).parent('li').addClass("selected").siblings("li").removeClass("selected"); 
    $('.container div').removeClass("selected"); 
    $('#' + $(this).attr('class')).addClass("selected"); 
}); 
+0

はい、トリックをしました:)変わった、私はclassNameがどこかで使われているのを見たと思います。しかし、これは本当にありがとうございました。 –

+1

@WimMertens - ようこそ。 'className'はjQuery関数ではなくネイティブDOM要素のプロパティなので、' this.className'または '$(this).attr( 'class')' – adeneo

0

にそれを変更する必要があるのattr( "クラスを使用し、jqueryの内のクラスを取得するにはjqueryのメソッド

var target = document.getElementById("table-names"); 
alert(target.className) //not className()

ではありません")、attr()メソッドを使用して任意の属性を取得または設定できます。

var $use = $(this).attr("class"); 
$("#"+$use).siblings().removeClass("selected")

私はこれが助けてくれることを願っています

関連する問題