.:: Carlos Alberto Junior - Tecnologia e Informação ::.

Selecionar elementos que o ID contenha uma string

Bom dia a todos,

O JQuery tem uma opção muito bacana nos seus seletores que é a seguinte, selecionar todos os elementos que por exemplo começem com uma determinada palavra.

A notação para o uso dessa funcionalidade é relativamente simples, embora é necessário que quem esteja querendo utilizar esse recurso saiba os conceitos básicos de Expressões Regulares.

No exemplo abaixo vamos levar em conta que temos um sistema qualquer que tenha o seu conteúdo divido em abas. Logo nestas abas, ao clicarmos em uma automaticamente as outras irão ser ocultadas e a selecionada irá ter o seu conteúdo apresentado.

A estrutura HTML seria a seguinte:

<div class="abas-curriculo">
   <div class="aba-selecionada">
      <a id="aba1" class="tab" onclick="return ajax.selecionaAba(this);">Aba 1</a>
   </div>
   <div class="div-tab">
<a id="aba2" class="tab" onclick="return ajax.selecionaAba(this);">Aba 2</a>
</div>
   <div class="div-tab">
<a id="aba3" class="tab" onclick="return ajax.selecionaAba(this);">Aba 3</a>
</div>
</div>

Daí depois temos as caixas de conteúdos, estas serão mostradas ou ocultadas conforme a aba selecionada.

A estrutura HTML das caixas HTML seria a seguinte:

<div class="caixa-conteudo-abas">
<div id="conteudo-aba1" class="aba-conteudo-visivel">
    aba 1
   </div>
   <div id="conteudo-aba2" class="aba-oculta">
     aba 2
   </div>
   <div id="conteudo-aba3" class="aba-oculta">
     aba 3
   </div>
</div>

Neste tutorial não será comentado o emprego de CSS, logo porque o foco do tutorial é o JQuery. :)

O nosso próximo passo é configurar os Javascripts necessários. Este exemplo é bem simples, logo você precisa apenas do JQuery e um arquivo JS para escrever as suas próprias funções.

Vamos considerar que já temos um arquivo *.PHP ou *.HTML. A classe Javascript para o controle das abas é a seguinte:

function AjaxAmbiente ()
{
    this.selecionaAba = function (link)
    {
        jquery('div[id*=conteudo-aba]').each(function(index, div){
            if(div.id.match(link.id + "$"))
            {
                jquery('#' + div.id).show('fast').html('Carregando...');
            }
            else
            {
                jquery('#' + div.id).hide('fast');
            }
        });
       
        return false;
    };
};

Vamos compreender o que temos no método selecionaAba da classe JS AjaxAmbiente.

jquery('div[id*=conteudo-aba]').each

Para chamar a função 'each' do JQuery foi carregado todos as DIV´s que tenham o seu ID começando com 'conteudo-aba'. Como a base desse tipo de seleção é por expressão regular, temos a explicação que o '*' é para selecionar qualquer elemento que começe ou termine com a palavra 'conteudo-aba', caso quisessemos que fosse buscados os elementos que começassem com alguma coisa utilizariamos o caracter '^' e para que terminasse com uma palavra seria o '$'.

No 'if' dentro da função each e utilizada uma expressão regular para simular uma função endsWith, logo temos:

div.id.match(link.id + "$")

No Javascript toda string é um objeto String 'obviamente', assim podemos chamar diretamente a função match para comparar se a DIV atual da iteração da função each é equivalente a aba selecionada, no caso um elemento <a> clicado.

Caso seja a DIV a ser apresentada, a mesma é exibida utilizando um efeito 'fade', no mesmo caso para ao ocultar as outras DIV´s.

jquery('#' + div.id).show('fast').html('Carregando...');
jquery('#' + div.id).hide('fast');

Este é um exemplo simples e que mostra uma pequena parte do JQuery e suas aplicações, você poderá estar utilizand chamadas AJAX (JQuery.post() ) para carregar conteúdos dinamicamente dentro das suas abas, e por ai vai...

Um abraço a todos e até a próxima.

Comentarios (0)

RSS feed Comments

Escreva seu Comentario

smaller | bigger

busy