Nessa terceira matéria vamos ver os Seletores de conteúdo.
Para todos os exemplos será utilizado o mesmo código JavaScript, variando apenas o código para acessar o elemento. Código que se encontra na linha 5. Abaixo veja o código completo.
Para disparar a ação usamos um botão.
<script type="text/javascript" src="../jquery-1.2.6.js"></script> <script type="text/javascript"> $(function(){ $('button').click(function () { /*linha dos exemplos*/ }); }); </script>
Seletores de conteúdo
Seletor contains
Esse seletor é exclusivo da biblioteca jQuery. Acessa o texto definido no parâmetro.
$('div:contains(jQuery)').css('text-decoration', 'underline');
HTML
<button type="button">Alterar</button> <div><p>Biblioteca jQuery</p></div> <div><p>div é elemento de bloco</p></div> <div>Biblioteca jQuery é ótima</div>
Ao disparar o evento o seletor acessa todos elementos div e procura o nome jQuery. No exemplo será afetada a primeira linha, mesmo estando dentro do elemento p, pois é descendente do elemento dv.
A terceira linha será afetada também.
Seletor empty
Acessa todos elementos que não tenham conteúdos.
$('td:empty').text('Estava vazia') .css('background', 'red');
HTML
<button type="button">Vermelha</button> <table border="1"> <tr> <td>Com conteúdo</td><td></td> </tr> <tr> <td>Com conteúdo</td><td></td> </tr> <tr> <td></td><td>Com conteúdo</td> </tr> </table>
No exemplo acima o seletor procura as células vazias e escreve o texto “Estava vazia”.
Seletor parent
Seletor exclusivo da biblioteca. Acessa todas as ocorrências de elementos que sejam elementos pais de outros elementos e até texto.
$('p:parent').css('background', 'red');
HTML
<button type="button">Vermelha</button> <p>Texto do primeiro parágrafo</p> <p></p> <p>Texto do <b>Terceiro</b>parágrafo</p>
Nesse caso será alvo o primeiro e o terceiro parágrafo. O Segundo não será alvo pois não tem conteúdo.
Seletor has
Exclusivo da biblioteca. Acessa elementos que contenham pelo menos um elemento que coincide com o especificado no seletor.
$(‘div:has(p)’).css('background','yellow');
HTML
<div><p>Olá! Aqui é um parágrafo</p></div> <div>Olá! Aqui é outro parágrafo</div>
A div que contem o elemento p é afetada, já que possui ao menos um elemento p dentro da div.