A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

jQuery - Tabelas listradas

Ter

2

Dez

2008


11:12

(8 votos, média 5.00 de 5) 


Criando objetos jQuery

Como sempre, para que possamos acessar a biblioteca jQuery, ela precisa ser incorporada à(s) página(s). Altere o caminho para a biblioteca de acordo com o diretório onde você escolheu colocá-la.

Tabela listrada com jQuery ...

Agora chegou a hora de pedir para a biblioteca trabalhar para nós. Se você ainda não sabe, $ é um alias para a classe jQuery e $( ) constrói um novo objeto jQuery. Este objeto tem informação que não acaba mais. Por exemplo, se precisarmos mexer em todos (ou alguns, dependendo do caso) parágrafos de um documento HTML, chamamos a jQuery com o seletor "p" para obter todos os elementos p do documento: $("p"). A mesma coisa pode ser feita com qualquer elemento do DOM.

De posse do(s) elemento(s), podemos acionar métodos (funções) da classe jQuery relacionadas a ele. Vou dar um exemplo mais claro usando o elemento a. Na forma tradicional escreveríamos o seguinte:

Link

Neste caso criamos o elemento a, definimos para este elemento um evento onclick que, quando ocorrer, dispara uma mensagem de alerta. Podemos obter exatamente a mesma coisa usando a biblioteca jQuery com:

$(document).ready( function() { $("a").click( function() { alert("Olá. Você me clicou!"); } ); } );

Neste exemplo a seqüência é a seguinte: obtemos um objeto jQuery com $( ), que nos traz o elemento document. Chamamos o método (ou função) ready (pronto) deste elemento com $(document).ready( ). Esta função nos indica quando o DOM for completado. Assim que isto ocorrer, acionamos uma nova função com function(), que é definida logo a seguir com a requisição de um novo objeto jQuery, desta vez solicitando todos os elementos a. Usamos um dos métodos do elemento a, a função click( ). Este método define um evento onclick. Finalmente definimos uma função para quando este evento ocorrer novamente com function() e especificamos que deve ser dado um alert("Olá. Você me clicou!").

Primeira diferença: na forma tradicional, apenas o link com onclick dará a mensagem quando for clicado; com a jQuery, todos os links do documento darão a mensagem quando forem clicados. Segunda diferença: o código para a jQuery parece muito mais complicado. Até concordo com isto, mas quando foi que, começando a tomar contato com alguma coisa nova, tudo não parecia mais complicado? E quando foi que, depois de se acostumar com as novidades, as coisas se tornaram muito simples? Comigo sempre foi (e ainda é) assim :smile:

Classificando elementos

Já vimos que, ao criar um objeto com "p" ou "a", temos acesso a todos os que existirem no documento. Como nosso objetivo é fazer com que determinadas tabelas sejam listradas, não todas elas, vamos precisar identificar as que devem receber um tratamento diferenciado. Podemos identificar elementos usando classes ou ids. Se criarmos uma tabela com id="zebra", apenas uma tabela deste tipo poderá existir no documento; se criarmos várias tabelas com class="zebra", todas elas podem conviver pacificamente no mesmo documento. Para deixar o código mais flexível, vamos criar a classe dentro de um estilo:

Tabela listrada com jQuery ...
Título 1Título 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2

Com esta folha de estilo definimos que as tabelas desta classe terão as bordas colapsadas (melhora o visual), que seus elementos th tenham letras brancas sobre fundo azul escuro e que seus elementos td (aninhados em elementos tr) tenham a margem inferior de 1 pixel também em azul. Teste seu script CSS e veja se o resultado é o mesmo que você está vendo ao lado.

Agora vem o pulo do gato com a jQuery. Vamos capturar todos os elementos tr de tabelas da classe zebra e adicionar uma classe a eles. Podemos chamá-la de alt, abreviação de alternado. Para que esta classe possa ser atribuída aos elementos desejados, ela também precisa ser definida no CSS: ... table.zebra tr td { border-bottom: 1px solid #95bce2; } tr.alt td { background: #ecf6fc; }

Tudo preparado, vamos fazer com que a jQuery comece a trabalhar para nós. Ainda dentro da área <head> da nossa página, logo abaixo da folha de estilo, adicione o seguinte script:

...
Título 1Título 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2

Se tudo funcionar como o previsto, até já sabemos o que deve acontecer: assim que o DOM estiver pronto, todos os elementos tr de todas as tabelas da classe zebra receberão a classe alt. Como esta classe já foi definida, sabemos que todas as linhas destas tabelas terão um fundo azul. Veja como ficou na tabela ao lado.

Peraí! Mas não é isto o que queremos. As linhas deveriam ter cores alternadas! Novamente é uma coisa fácil de resolver. Se você quiser que os tr das linhas pares sejam classificados, use even (par, em inglês); se quiser que isto aconteça com as linhas ímpares, use odd (ímpar em inglês). O código jQuery muda só um pouquinho e o resultado é o desejado

...
Título 1Título 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2
Texto 1Texto 2

Informações adicionais