2016-03-26 9 views
-3

私はより良い見出しについて多くのことを考えましたが...ちょっと私の問題を説明してくれませんでした。JS - Jqueryの選択が混乱しています

I次のコードを持っている:

<div id="chatrooms"> 
    <div class="chatroom active" id="all">all</div> 
    <div class="chatroom" id="245332"></div> 
</div> 

注私はクラスの「チャットルーム」を使用し、「チャットルーム」 - そう混乱いけないの

$(document).on('click', ".chatroom", function(e){ 
    var id = e.target.id; 
    $('.active').removeClass('active'); 
    $('.chatrooms > .chatroom#' + id).addClass('active'); //doesn't work 
    $('.chatrooms').children('#' + id).addClass('active'); //doesn't work 
    $(this).addClass('active'); //works 
}); 

ので、この3つの方法の作品の一つだけしかし、少なくとも1つは作業していない必要があります。なぜなら、IDを持つ ".chatrooms"の外に複数のdivがあるからです。あなたが私を助けることを願っています!御時間ありがとうございます!

+0

あなたは実際に何を達成しようとしているのではなく、うまくいかないことを教えてくれましたか? –

+0

私はまた何がうまくいったのか - これもまた達成したいと思っています:)クラスの要素にクラスを追加したいと思います: 'chatroom'とid:var id in .chatrooms – dunnohowishouldnamemyself

+0

うまくいくか、質問はなんですか? –

答えて

3

これを正しく読んだ場合は、chatroomsがクラスではなくdivのIDです。したがって、jQueryセレクタは.chatroomsの代わりに#chatroomsである必要があります。

0

ここにはいくつか問題があります。まず、チャットルームのIDを.chatroomsでターゲットに設定しようとしています。 jQueryはCSSセレクタを使用して要素をターゲティングするため、IDをターゲティングするための正しい形式は#chatroomsです。

次は意味「.chatrooms > .chatroom#」を使用している「chatroomsCLASSを持つすべての要素の直接の(最初のレベル)の子であるchatroom#CLASSを持つすべての要素をターゲットにしています。」

あなたがchatroom#CLASSを持つ任意の要素を持っていない、またあなたが子供たちを探すためにchatroomsCLASSを持つ任意の要素を持っていないので、あなたの結果は空にしようとしています。

あなたは、あなたがそこに開始し、その後、戻ってjQueryのに来る必要がありますhttp://flukeout.github.io

http://www.w3schools.com/cssref/css_selectors.asp上またはこの偉大な実践サイトのCSSセレクタをブラッシュアップすることができます。

関連する問題