1

ショーケースのこの例に従います: 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>
4

2 に答える 2

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();"

于 2012-10-11T13:54:05.857 に答える
0

richfaces 4 はよくわかりませんが、modalpanel は div をレンダリングします。その可視性は単純な js で制御できます。

var isShown = false;
function onlinkclick() {
  if(isShown) {
      hideElement();
  } else {
      showElement();
  }
  isShown = !isShown;
}
于 2012-10-10T13:53:00.470 に答える