2012-01-05 85 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