2012-04-03 77 views
0

我有一个非常简单的问题,其实这是没有问题的,这是固定的JavaScript错误,反正这里是代码:removeclass不工作

$(document).ready(function() { 
     $('#accordion a.item').click(function() { 
      $(this).addClass('selected'); 
      $(this).removeClass('selected'); 
      $('#accordion li').children('ul').slideUp('slow'); 
      $(this).siblings('ul').slideDown('slow'); 
     }); 
    }); 

和HTML:

<ul id="accordion"> 
    <li> 
     <a href="#" class="item">BANKS</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
    <li> 
     <a href="#" class="item">PETROL</a> 
     <ul>BLA BLA BLA</ul> 
    </li> 
</ul> 

当我点击一个链接时,'selected'类被添加到它,但是当我点击另一个链接时,'selected'类不能删除,那里有什么错误?

谢谢大家的帮助!对此,我真的非常感激!

+0

您正在添加和删除相同元素上的类。这是一个错字吗? – 2012-04-03 09:29:10

+0

我看不出如何将'selected'类添加到 - 您的代码添加,然后立即从任何锚点被点击移除类。 – 2012-04-03 09:29:32

+0

其实你在做什么,它首先你会添加类选择点击标签,然后你正在删除这个类.. – 2012-04-03 09:29:47

回答

3

目前还不清楚是什么你正在尝试做的,但它看起来像你想的类添加到点击的元素和从所有的兄弟姐妹删除。您当前的代码将该类添加到相同的元素并将其删除,从而导致无法执行任何操作。

你可能要像

$(document).ready(function() { 
    $items = $('#accordion a.item'); // all the items 
    $items.click(function() { 
     $items.removeClass('selected'); // remove class from everything 
     $(this).addClass('selected'); // add class to clicked item 
     $('#accordion li').children('ul').slideUp('slow'); 
     $(this).siblings('ul').slideDown('slow'); 
    }); 
}); 
+0

是的!究竟!这是我的错误,当然它最终没有做任何事情:)我只是不知道如何重写代码,谢谢!只要8分钟就会过去,我会接受你的答案。 – 2012-04-03 09:33:03

0

利用ToggeleClass然后adClass/ removeClass方法。

$("Selector").toggleClass('name of class',true); //apply class 
$("Selector").toggleClass('name of class',false); //remove class 
+0

-1:你认真吗?代码是添加一个类,然后从同一个元素中删除它。这显然不起作用。 – Jon 2012-04-03 09:31:04

+0

@Jon - 根据我的理解,他想申请类,并希望从元素中删除一个类...多数民众赞成我以这种方式消化...任何方式,我认为我在错误的方式...但toggleClass确实有意义,如果你想申请和删除类.. – 2012-04-03 09:35:00

0

$(this)是您点击链接,不是所有的链接。您需要删除所有链接的类。

$(document).ready(function() { 
     $('#accordion a.item').click(function() { 
      $('#accordion a.item').removeClass('selected'); 
      $(this).addClass('selected'); 
      $('#accordion li').children('ul').slideUp('slow'); 
      $(this).siblings('ul').slideDown('slow'); 
     }); 
    }); 
0

您的功能中的以下行添加和删除选择到同一元素的类。

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

因为要添加和由这是当前元素(一个这仅仅是点击)中提到的元件上去除类。这些会做的是将选中的类添加到clicked元素并立即删除它。

需要做的是

1-首先删除从具有它

2-添加选择为由

称为当前元素的任何类元素中选择的类一种方法是

$('#accordion a.selected').removeClass('selected'); 
$(this).addClass('selected'); 

希望有帮助。