Использование RichFaces jquery для добавления другого класса на вкладку

StackOverflow https://stackoverflow.com/questions/1084744

Вопрос

У меня есть панель rich: TabPanel с несколькими вкладками в ней.Я хочу использовать jquery для записи изменений на каждой вкладке, чтобы при внесении изменений внутри вкладки я менял фоновое изображение вкладки.

Это выглядит примерно так:

<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>

Причина, по которой у меня есть селектор say #tab_lbl, заключается в том, что html, сгенерированный на основе этого, выглядит следующим образом:

<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>

Теперь я также попытался указать селектор следующим образом selector ="#form:tab_lbl" , но все равно я никогда не смогу добавить класс к этому элементу td.Есть ли для этого какая-то причина?Если я создам новую таблицу без использования richfaces TabPanel, я могу легко использовать этот способ добавления классов с теми же селекторами, но в этом примере это просто не работает.

Есть какие-нибудь идеи?

Редактировать:Я хотел бы добавить, что если я использую firebug и добавляю класс вручную, я получаю результат, который я ищу.

Это было полезно?

Решение

rich:jQuery найдет для вас подходящий идентификатор, если сможет сопоставить его с компонентом.Из Руководство разработчика Richfaces:

Когда вы определяете селектор, RichFaces проверяет его содержимое и пытается заменить определенный в селекторе идентификатор идентификатором компонента, если он найден.

Также посмотрите на приведенный пример, когда вы хотите указать точный ID:

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

(обратите внимание на двойную косую черту, чтобы избежать двоеточия)

Вы могли бы использовать #tab1 в качестве селектора и rich:jQuery заменил бы его правильным идентификатором.Однако это позволит найти вкладку, а вам нужна метка вкладки.

Таким образом, возможно, более надежным способом найти метку (надежным в том смысле, что если вы переместите свою страницу или присвоите форме идентификатор, то она все равно будет работать) было бы найти вкладку, а затем дочерний элемент этой вкладки, который является меткой.Таким образом, возможным селектором было бы:

#tab1/../td.rich-tab-header
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top