我在展示中关注此示例:http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=popup&sample=login&skin=blueSky 它显示了如何单击链接以打开popupPanel并将该面板附加到该链接的相同位置。但我想这样,如果我再次点击,它将关闭面板。谁知道如何实现这一目标?这是我的代码
<h:outputLink value="#" id="sb-dd-ol" >
<rich:componentControl event="click" operation="show" target="sb-dd-pp">
<a4j:param noEscape="true" value="event"/>
<rich:hashParam>
<a4j:param noEscape="true" name="top"
value="jQuery(#{rich:element('sb-dd-ol')}.parentNode).offset().top +
jQuery(#{rich:element('sb-dd-ol')}.parentNode).height()" />
<a4j:param noEscape="true" name="left"
value="jQuery(#{rich:element('sb-dd-ol')}.parentNode).offset().left" />
</rich:hashParam>
</rich:componentControl>
Test
</h:outputLink>
<rich:popupPanel id="sb-dd-pp" autosized="true" modal="false"
moveable="false" resizeable="false" followByScroll="false">
This is a test
</rich:popupPanel>
答案 0 :(得分:5)
您可以扩展PopupPanel原型,如下所示:
jQuery.extend(RichFaces.ui.PopupPanel.prototype, {
toggle: function(event, opts) {
if (this.shown) {
this.hide(event, opts);
} else {
this.show(event, opts);
}
}
}
之后,您可以在componentControl中使用operation="toggle"
(替代方法是在链接上添加onclick="#{rich:component('sb-dd-pp')}.toggle();"
。)
答案 1 :(得分:0)
不太了解richfaces 4,但modalpanel渲染div,其可见性可以用简单的js控制:
var isShown = false;
function onlinkclick() {
if(isShown) {
hideElement();
} else {
showElement();
}
isShown = !isShown;
}