2013-10-08 21 views
0

我的意图是实现一个h:outputLinkonClick -Event。 onClick -Event调用javascript函数,该函数应该更改h:panelGroupDIV)的背景颜色。JSF2.0 - CSS更改在生命周期中丢失

这里是代码snipplets:

<script src="http://code.jquery.com/jquery-latest.js"></script> 

<script type="text/javascript"> 
    function activate(menuId) { 
     $(".menu_"+menuId).css("background", "red"); 
    } 
</script> 

.. 

<h:panelGroup layout="block" id="menu" style="" class="menu_#{menu.id}"> 
    <h:outputLink id="menuLevel0" class="menuLevel0" action="" onclick="activate(#{menu.id})"> 
     .. 
    </h:outputLink> 
</h:panelGroup> 

如果该链接被点击,DIV^h背后:panelGroup中变化it's颜色为红色,但立即又变为白色。 (默认背景色)。

看起来好像DIV在构建响应期间变红。并且颜色会再次变为默认颜色,因为JSF呈现页面并丢失CSS更改。 这可能是正确的解释发生了什么?

我现在的问题是,我该如何更改h:panelGroup“永久”的颜色?

在此先感谢。

回答

0

您的div会显示红色背景,但您的链接的正常操作由浏览器继续进行,即导航至服务器。一旦环回完成,你会松开背景颜色。

要使其按照您希望的方式工作,您需要告诉浏览器在单击链接时不启动HTTP请求。您可以简单地:

<h:outputLink id="menuLevel0" class="menuLevel0" action="" onclick="activate('#{menu.id}'); return false;" > 
+0

Thx为您的答案。 不幸的是我需要HTTP请求。 我的实现背后的想法是,一个菜单是建立在服务器端。 如果点击菜单项(链接),则将索引(URL参数)发送到服务器,并再次生成有关索引的菜单。 要激活或更好地突出显示所选菜单项,我希望客户端处理它的颜色。 一个想法是处理服务器端的颜色。在这种情况下,我不必担心消失的颜色。 我不知道如何才能正常工作,当客户端将处理颜色。 – user2857875

+0

使用css类并在您的jsf中正确链接上动态应用类 –