2012-04-03 92 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'); 

希望有幫助。