sábado, março 24, 2007

JQuery, CSS e ids (X)HTML

Em um projeto que estou trabalhando no momento estou usando o JQuery, porém me deparei com um problema ao tentar utilizar o seu $() com elementos que contenham ids com caracteres como ponto e dois-pontos, que são caracteres válidos em ids.

Preparei um arquivo de testes e postei o problema na lista do JQuery, e em alguns minutos obtive entre as respostas uma que apontava que já existia um bug report para este problema (aqui entra a lição de sempre procurar pelo problema no bug tracker do projeto!), que até agora ainda não foi solucionado, existe uma sugestão de patch que altera a expressão regular do CSS selector do JQuery para uma solução parecida com o que já existe na especificação do CSS...


<style>
#test.x { background-color: green; color: yellow; }
</style>
...
<p id="test.x">P with id 'test.x'.</p>


O código acima não irá funcionar como esperado, ele na verdade seleciona o elemento com id 'test' e classe 'x', para ter o efeito desejado deve-se usar '#test\.x', ou seja, "escapa"-se o ponto, o que informa ao interpretador CSS para cancelar a busca pela classe.

A solução temporária é eu aplicar o patch e compilar a minha própria versão do JQuery...

Nenhum comentário: