Pessoal,
Vou postar neste fórum pois acho que tem mais haver com javascript/jQuery que com richfaces.
Galera,
Estou tentando customizar o estilo do componente PanelMenu do RichFaces, porém me deparei com um problema que esta me dando muito trabalho:
Quando o componente é renderizado, para cada item do menu, é criado a estrutura:
<div>
<table>
<tr>
<td style="padding-left: 20px;">icon</td>
<td>legenda</td>
<td>icon</td>
</tr>
</table>
</div>
Todos os elementos tem seus ids e classes de css, o que facilita a manipulação via css.
No caso da TD que tem o style=“padding-left: 20px”, esse atributo é fixo e não pode ser manipulado.
Quando tento subrescrever a classe desse elemento, o computedStyle ou o estilo que tem prioridade é o do definido no próprio elemento.
Eu tentei então utilizar jQuery para remover este atributo do elemento mas não consegui porque o componente só adiciona os elementos do menú quando clica no componente. Até este momento, os elementos do menú não existem no DOM. Eles são gerados somente quando o componente é acionado. Então com jQuery(selector).removeAttr(‘style’); não funciona, pois ele roda somente quando a página é renderizada e neste momento os elementos não estão no DOM.
Pensei então em algo, mas não sei se é possivel. Estou tentando implementar mas até agora não consegui.
// atribuo o evento original do componente a uma variável
var currentEvent = jQuery('panelMenu').mousedown;
// subrescrevo o evento original com a minha função
jQuery('panelMenu').bind('mousedown', function(){
// chamo primeiro o evento original
currentEvent();
// chamo então minha função
panelMenuFix();
});
function panelMenuFix() {
jQuery('panelMenu div table tr td').removeAttr('style');
}
Até agora não sei se conseguirei fazer isso desta forma.
Alguém tem alguma sugestão?!?
[]'s