2013-10-05 43 views
-1

我有有类.folder活动类的兄弟姐妹removeClass

各种元素当我点击一个我想要的类active添加到它和其他任何元素删除类。

问题是先从其他人中删除类,其根本就没有这样做。

这里就是我想:

$('.folder').click(function() { 
    $(this).siblings('.folder').removeClass('active'); // remove from all other <SPAN>s 
    $(this).addClass('active'); // add onto current 
}) 

示例HTML:

<ul> 
    <li class="closed last"> 
     <span class="folder" id="16">More coding</span> 
    </li> 
</ul> 
</li> 
<li class="closed collapsable lastCollapsable"> 
    <span class="folder active" id="12">Music</span> 
    <ul style="display: block;" id="browser" class="filetree treeview-famfamfam"> 
     <li class="closed collapsable"> 
      <span class="folder active" id="13">Music child</span> 
       <ul style="display: block;" id="browser" class="filetree treeview-famfamfam"> 
        <li class="closed last"> 
         <span class="folder" id="15">More music</span> 
        </li> 
       </ul> 
     </li> 
     <li class="closed last"><span class="folder" id="17">Another child here</span> </li> 
    </ul> 
    </li> 
</ul> 
+1

你可以显示你的HTML吗?我的猜测是他们不是兄弟姐妹。 –

+1

HTML Please .... –

+0

@ Karl-AndréGagnon我认为你是对的 - 我应该使用.find而不是 –

回答

1

按我的意见,从所有eleemnts

删除类
$('.folder').click(function() { 
    $('.folder.active').removeClass('active'); // Just remove class from all folder 
    $(this).addClass('active'); // add onto current 
}) 
0

简单而有效:

$('.folder').click(function() { 
    $('span .folder').removeClass('active'); // remove from all other <SPAN>s 
    $(this).addClass('active'); // add onto current 
}) 
0

这里有3种可能的解决方案。

一个基本的:

$('span.folder').click(function() { 
    $('.folder').removeClass('active'); 
    $(this).addClass('active'); 
}) 

一快一点点:

$('.folder').click(function() { 
    $('span.folder.active').removeClass('active'); 
    $(this).addClass('active'); 
}) 

如果有其他元素最快的,但不会工作与.active

$('.folder').click(function() { 
    $('.active').removeClass('active'); 
    $(this).addClass('active'); 
}) 

JsPerf:http://jsperf.com/three-solutions