JS - Jquery选择令人困惑

时间:2016-03-26 19:21:09

标签: javascript jquery selector

我想了很多关于更好标题的内容,但是......是的,有些人没有描述我的问题。

我有以下代码:

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

请注意,我使用的是&#34; chatrooms&#34;和&#34;聊天室&#34; - 所以不要混淆

$(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
});

所以这三种方法中只有一种有效,但我至少需要一种不能工作的方法,因为我有多个div&#34; .chatrooms&#34;与id。我希望你能帮帮我!谢谢你的时间!

2 个答案:

答案 0 :(得分:3)

如果我读得正确,chatrooms是你的div,而不是上课。所以jQuery选择器应该是#chatrooms而不是.chatrooms

答案 1 :(得分:0)

这里有一些问题。首先,您正试图定位您的聊天室&#39; ID为.chatrooms。 jQuery使用CSS选择器来定位元素,因此定位ID的正确格式为#chatrooms

接下来,您正在使用&#39; .chatrooms > .chatroom#&#39;这意味着&#34;定位chatroom# CLASS 所有元素,这些元素是所有元素的直接(第一级)子元素,其中{strong> CLASS 为{{ 1}}#&34;

由于您没有chatrooms CLASS 的任何元素,您也没有任何 CLASS {{1}的元素要找到孩子,你的结果将是空的。

您可以在http://www.w3schools.com/cssref/css_selectors.asp或这个精彩的网站http://flukeout.github.io上了解CSS选择器

你应该从那里开始,然后回到jQuery。