仅在显示组件时执行效果

时间:2013-04-21 09:16:46

标签: jsf jsf-2 primefaces

我有一个面板,如果它只显示,我想对它执行隐藏效果,如果它被隐藏,效果不起作用。

 <h:outputLink id="open_link" value="#" styleClass="underline">
            Click To Open   

<p:effect for="blank_panel" type="blind" event="click" speed="2000">
        <f:param name="mode" value="'hide'" />
</p:effect>

<p:effect type="blind" event="click" for="display_tabs" delay="1000">
    <f:param name="mode" value="'show'" />
</p:effect>

</h:outputLink>

    <h:panelGroup id="blank_panel" layout="block">

    </h:panelGroup>

我想第二次点击链接时(在这种情况下隐藏了blank_panel) 不执行blank_panel的效果

     <!-- executed only if the blank_panel is shown -->
     <p:effect for="blank_panel" type="blind" event="click" speed="2000">
        <f:param name="mode" value="'hide'" />
</p:effect>

1 个答案:

答案 0 :(得分:1)

INMO你最好使用jQuery效果,但是......

由于你想使用p:效果的primefaces,我认为你应该使用两个<h:outputLink和它们的可见性,按一个应该隐藏它并显示第二个<h:outputLink,反之亦然... < / p>

 <h:outputLink id="open_link" 
    onclick="$('#open_link').hide();$('#open_link2').show();" value="#" 
    styleClass="underline">
            Click To Open   
    <p:effect....
    <p:effect....
 </h:outputLink>


 <h:outputLink id="open_link2"
    onclick="$('#open_link2').hide();$('#open_link').show();" value="#" 
    styleClass="underline">
            Click To Open   
    <p:effect...
 </h:outputLink>

不确定ids ...(如果你不使用prependId =“false”等等......)