2012-01-05 80 views
0

我有一個列表,我在其中動態添加類名,現在當我再次單擊該項目時,類仍然在那裏。我不希望我想將該類名分配給當前單擊的列表項。現在原型js庫初學者

<ul id="menubar"> 

<li>one</li> 
<li>two</li> 
</ul> 

當我點擊一個我動態添加的類名,當我點擊兩個類名仍舊保持在一個相同的,它被兩個受到影響。但我希望它從一箇中刪除並應用於當前點擊的項目。

我該如何實現它?

回答

2
$$('#menubar li').invoke('observe', 'click', (function(e) { 
    //removes classname from all the li elements 
    $$('#menubar li').invoke('removeClassName', 'myClass'); 
    //Gets the li you clicked on 
    var list_item = Event.element(e); 
    //adds the classname 
    list_item.addClassName('myClass'); 
}).bindAsEventListener(this)); 
+0

謝謝你會嘗試一下! – Maverick 2012-01-05 23:42:48

+0

還有一件事...李已經與ajax調用onclick函數..我已經使用onCompletedEvent的東西,所以你的解決方案的工作呢? – Maverick 2012-01-05 23:43:51

+0

是的,它不應該與onclick衝突。 – 2012-01-06 00:17:55

0

您需要將.removeClass()與addClass()添加到另一個時相同的事件中。

$('.one').click(function(){ 
    $(this).addClass('myClass'); 
    $('.two').removeClass('myClass'); 
}); 

這可以寫得更有效率,但即時編寫會議之間。

希望這是一個開始!

+0

它是在原型? – Maverick 2012-01-05 23:42:37

+0

哦,我的壞...那是jQuery。我的建議是實施羅納德的答案。 – Ken 2012-01-06 00:00:17