我有一堆这样的链接:
<li wicket:id="LIlink"><a href="#" wicket:id="link">Link name</a></li>
在wicket中,<li>
是WebMarkupContainer,<a>
是链接
当我点击一个链接时,我想把李的类改为活动的,我用我自己制作的一个类来做这个,就像下面的例子一样:
Link link= new Link("link")
{
@Override
public void onClick() {
WMK.add(CssClassManagement.addAttribute("active"));
}
};
考虑到WMK是包含链接的WebMarkupContainer。
在这里之前,一切都正常,问题是我不知道当单击另一个链接时,如何从<li>
中删除活动类?
如果你的链接指向不同的页面,你可以检查当前页面是否是一个给定链接指向的页面,然后决定添加或删除活动属性。
问题出现在CssClassManagement.addAttribute("active")
中。这为组件添加了一个永久的Behavior,为组件的每个呈现提供"活动"CSS类。如果"行为"是临时的(请参见Behavior#isTemporary()
),则它将只使用一次并立即从组件中删除。所以下一次重新绘制页面时不会将链接标记为活动。
另一种方法是在点击事件发生时删除CSS类:
$(function() {
$(document).on('click', 'a', function() {$('li.active').removeClass('active');});
});
当用户单击锚点时,这将删除CSS类。重新绘制页面时,会将新链接选择为活动链接。