Frage

Ich habe einen reichen: TabPanel mit mehreren Registerkarten in ihm. Ich mag Jquery verwenden, um Änderungen auf dem einzelnen Registerkarten zu erfassen, so dass, wenn eine Änderung in einer Registerkarte gemacht wird ich das Hintergrundbild des Registerkarte ändern.

Es sieht wie folgt aus:

<h:form id="form">
    <rich:jQuery selector="#tab1_lbl" query="addClass('testClass')" timing="onload"/>
        <rich:tabPanel switchType="client" id="tabContainer">
            <rich:tab id="tab1" label="tab1" title="tab1" >
                 tab1
            </rich:tab>

            <rich:tab id="tab2" label="tab2">
                 tab2
            </rich:tab>
       </rich:tabPanel>
</h:form>

Der Grund, ich habe die Wähler sagen #tab_lbl ist, weil die HTML daraus erzeugt wie folgt aussieht:

<td id="form:tab1_lbl" class="dr-tbpnl-tb rich-tab-header dr-tbpnl-tb-act rich-tab-active " title="tab1" onmouseout="RichFaces.outTab(this);" onmouseover="RichFaces.overTab(this);">
tab1
</td>

Jetzt habe ich versucht, auch die Wähler wie dieser Selektor = angeben „# Form: tab_lbl“, aber immer noch kann ich nie die Klasse zu diesem td Elemente hinzuzufügen erhalten. Gibt es einen Grund dafür? Wenn ich eine neue Tabelle zu machen, ohne mit Richfaces TabPanel ich einfach diese Art und Weise der Zugabe von Klassen mit den gleichen Selektoren verwenden kann, aber es nur Arbeit in diesem Beispiel nicht.

Irgendwelche Ideen?

Edit:. Ich möchte hinzufügen, dass, wenn ich Firebug verwenden und fügen Sie die Klasse von Hand ich das Ergebnis Im bekommen suchen

War es hilfreich?

Lösung

rich:jQuery die richtige ID für Sie, wenn es zu einem Bauteil zusammenbringen kann. Aus dem Richfaces Entwickler Führer :

  

Wenn Sie einen Selektor definieren, Richfaces   untersucht den Inhalt und die versucht,   die der Definition in den Selektor ID replace   mit einem Komponenten-ID, wenn es gefunden.

Achten Sie auch auf das Beispiel gegeben, wenn Sie die genau ID angeben möchten:

<rich:jQuery selector="#form\\:menu img" query="..." />

(man beachte die doppelte Backslash den Darm zu entkommen)

könnten Sie verwenden #tab1 als Wähler und reich: jQuery es mit der richtigen ID ersetzen würde. Dies würde jedoch die Registerkarte finden und Sie die Registerkarte Etikett.

So möglicherweise eine robustere Art und Weise das Etikett zu finden (robust, dass, wenn Sie Ihre Seite bewegen oder dem Formular eine ID geben, dann wird es immer noch funktionieren) wäre die Registerkarte zu finden und dann, die das Kind dieses Registerkarte das Etikett. So ein möglicher Wähler wäre:

#tab1/../td.rich-tab-header
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top