Использование RichFaces jquery для добавления другого класса на вкладку
Вопрос
У меня есть панель 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