2010-02-11 73 views
15

我有4個錨,我想添加一個當前類的錨,因爲它被點擊並從其他3個同時刪除類。這是我的代碼。我究竟做錯了什麼?jquery add刪除類

if ($("ul#thumb a").hasClass("current") { 
    $("ul#thumb a").removeClass("current"); 
    $(this).addClass("current"); 
}); 

和我的HTML看起來像這樣:

<ul id="thumbs"> 
    <li> 
     <!-- intro page navi button --> 
     <a id="t0" class="active" name="t0">The Company</a> 

     <ul class="navi"> 
      <li><a style="display:none"></a></li> 
      <li><a id="t1" name="t1">The Brief</a></li> 
      <li><a id="t2" name="t2">The Solution</a></li> 
      <li><a id="t3" name="t3">The Result</a></li> 
     </ul> 

    </li> 
</ul> 
+0

你的HTML看起來像什麼? – Sampson 2010-02-11 16:36:37

+0

什麼是不工作?它是不刪除類,還是不添加類?此外,這看起來不像jQuery的全部數量。你需要某種'$('ul#thumb a')。click(function(){...});'來包裝它。 – 2010-02-11 16:38:58

+0

@Topher我修改了我的帖子以顯示我的html – mtwallet 2010-02-11 17:28:43

回答

29

通過使用事件代表團,我們只能綁定所有點擊事件的一個處理程序。當點擊一個錨(比.current錨等),我們剝去.current錨同級車,使點擊錨的新的當前一個:

$("#thumbs").on("click", "a:not(.current)", function (event) { 
    $(".current", event.delegateTarget).removeClass("current"); 
    $(this).addClass("current"); 
}); 
+0

+1 - 好。我編輯的帖子,並沒有看到= P – 2010-02-11 16:39:37

+0

@Jonathan我修改了我的帖子來顯示我的html – mtwallet 2010-02-11 17:28:06

+0

@Jonathan Sampson'e.preventDefault();'是什麼意思? +1順便說一句 – ant 2010-02-11 17:29:03

0

我認爲這將有助於你

$("a").click(function() { 
    $('a').removeClass('current'); 
    var id = $(this).attr('id'); 
    $('#'+id).addClass('current'); 
}); 
+0

你爲什麼要混合'$'和'jQuery'?你應該選擇一個並堅持下去。 – Lix 2014-04-24 13:08:26

+1

對不起,這是錯誤的..你可以使用一個 – Raghvendra 2014-04-24 13:11:58