Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gremio10

[Resolvido] Verificar qual foi clicado

Recommended Posts

Fala galera, eu tenho um menu feito com lis, e tem todos os estados deles, :active, :hover... Só que ao clicar nele, tenho de deixar ele no estado :active, fizemos uma classe para isso, só que estou tendo dificuldades para poder adicionar o estado :active apenas para o que foi clicado, e retirar de todos os outros que estão ali.

 

JS:

 

$( ".radio-buttons" ).each( function() {

           var class_default = $( this ).attr( "atribute" );

           $( this ).removeClass( class_default + "-active" );

           $( this ).click( function() {

               $.each( this, function( e, val ) {

                   $( this ).removeClass( class_default + "-active" );

               } );


               $( this ).removeClass( class_default + "-active" );
               $( this ).removeClass( class_default );
               $( this ).addClass( class_default + "-active" );

           } );                

       } );

 

menu:

 

<ul class="cadastro_tabela">
           <div class="number_p"><b>1</b></div>
           <div style="width:924px; height:160px; margin:0 auto; padding-top:70px;">
               <li class="internauta cursor radio-buttons" id="0" atribute="internauta"></li>
               <li class="profissionais cursor radio-buttons" id="1" atribute="profissionais"></li>
               <li class="instituicoes cursor radio-buttons" id="2" atribute="instituicoes"></li>
               <li class="laboratorio cursor radio-buttons" id="3" atribute="laboratorio"></li>
           </div>
       </ul>

 

Obrigado

 

RESOLVIDO:

 

código pronto:

 

$( ".radio-buttons" ).click( function( e ) {

           var ispro = $( this ).attr( "id" );
           var class_default = $( this ).attr( "atribute" );

           $( ".radio-buttons" ).each( function() {
               var default_class = $( this ).attr( "atribute" );
               $( this ).removeClass( default_class + "-active" );
               $( this ).addClass( default_class );
           } );

           $( this ).each( function() {
               $( this ).removeClass( class_default );
               $( this ).addClass( class_default + "-active" );
           } );

       } );

 

:natalw00t:

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa cara.. era muito mais simples fazer assim:

 

$( ".radio-buttons" ).removeClass( class_default );

e para adicionar:

$( this ).addClass( class_default + "-active" );

 

entendeu ?

desnecessário o .each(), pois o jQuery faz a maioria dos loops internamente, sem que você veja, ou precise se preocupar com eles.

 

Eu trocaria teu código atual, por isso aqui:

$( ".radio-buttons" ).click( function( e ) {

           var ispro = $( this ).attr( "id" );
           var class_default = $( this ).attr( "atribute" );

           $( ".radio-buttons" ).removeClass( class_default );
           $( this ).addClass( class_default + "-active" );        
       });

 

 

:lol:

 

ainda assim, tome cuidado come ssa de "inventar" atributos.

Se você usasse CSS corretamente, entendendo como funciona a cascata, não precisaria de uma class -active para cada item.

 

Apenas uma .active, não genérica resolveria. #fikdik

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.