Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

Verificar se existe algum igual

Recommended Posts

Fala galera, eu tenho um botão "like" na minha página, funciona muito bem, o problema é que em certas páginas ele se repete para vários posts diferentes, para dar um like para cada, até ai ele funciona, só que entrando em um desses posts, ele tem dois likes, iguais, mesmos dados, valores, só que se eu clico no primeiro, ele apenas valida o primeiro, o segundo, fica clicável...

 

Como posso fazer para verificar se na página ou se no código existem dois valores iguais ?

 

$( ".likeLiga" ).live( "click", function( e ) {

                       e.preventDefault();

                       var $this = $( this );
                       var type = $this.attr( "type-like" );
                       var type_id = $this.attr( "type-id" );                        
                       var url = "<?php echo $this->serverUrl( $this->baseUrl( "painel/like" ) ) ?>";
                       var total = $this.attr( "value-type-count-like" );

                       var user_id = <?php echo $auth->read()->id ?>;
                       var obj = { usuario_id: user_id, type: type, type_id: type_id };


                       $.post( url, obj, function( e ) {

                           if( e > 0 )
                           { 
                               $this.removeClass( "bt-recomendar-small" ).html( "<div style='font-size: 11px'>Recomendado por você</div>" ).addClass( "bt-recomendar-small-clicked" );

                               if( total == "Seja o 1º")
                               {
                                   total = parseInt( 1 );
                               }
                               else
                               {
                                   total = parseInt( total ) + parseInt( 1 );
                               }

                               $( "." + type_id ).html( total );
                           }
                           else
                           {
                               $( "." + type_id ).html( "" );
                               $( "<div></div>" ).append( "Erro: Tente novamente" ).css( "fontSize", "9px" ).appendTo( "#" + type_id );
                           }
                       } );

                   } );

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o que eu preciso fazer é o seguinte.

 

na minha página, eu tenho dois botões likes próprios. Eles, tem o mesmo HTML, mesmos valores, tudo igual, apenas estão em posições diferentes.

Quando eu clico em um, ele valida o click, e muda a classe do botão, indo para "você deu like", só que apenas no botão que cliquei, eu queria fazer que eu cliquei no botão de cima, ele muda tanto o de cima quanto o de baixo.

 

Eu tinha conseguido fazer isso, o problema é que eu tenho em outras páginas, o mesmo botão só que para vários registros, ou seja, cada HTML com valores diferentes.

E quando eu clicava em um, ele mudava os valores de todos os outros botões.

 

Acho que fui mais explicativo :lol:

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão se você quer mudar a classe de todos então não use "this" que se refere apenas a este que foi clicado.

 

Use normalmente:

$(".likeLiga").html( "<div style='font-size: 11px'>Recomendado por você</div>" ).removeClass("bt-recomendar-small").addClass( "bt-recomendar-small-clicked" );

 

Deixe para remover a classe antes de addClass

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logan Martinelli, se eu faço isso que você sugeriu, quando for na listagem de vários, todos irão mudar o seu estado de clicável para clicado, impossibilitando que o usuário curta outro post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logan Martinelli, se eu faço isso que você sugeriu, quando for na listagem de vários, todos irão mudar o seu estado de clicável para clicado, impossibilitando que o usuário curta outro post.

 

Acho então que não entendi o que você deseja, teria resolvido já muito tempo pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que seria o caso de usar seletores css ou não? Seletores irmãos, descendendes ou negações.

Tipo:

Remover todas as classes dos elementos que tenham a classe 'bt-recomendar-small', menos a do primeiro elemento.

$(".bt-recomendar-small:not(.bt-recomendar-small:first)").removeClass("bt-recomendar-small");

 

Acho que é por aí.

Testei esse código com o jQuery 1.6.4 em uma estrutura tipo:

<div id="containes">
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
</div>

e funcionou bem no IE8, FF7 e Chrome15. Apenas o 1º item manteve a formatação CSS

PS: O seletor not() é CSS3, pode dar alguma incompatibilidade com navegadores antigos

 

Para mais informações sobre seletores CSS3:

http://maujor.com/tutorial/seletores-css3.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para remover todos menos o primeiro faça assim:

 

<script>
$( ".likeLiga" ).live( "click", function( e ) {
var firstElm=$('#containes .bt-recomendar-small').first();
$('#containes .bt-recomendar-small').not(firstElm).removeClass("bt-recomendar-small");
});
</script>

<div id="containes">
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small">Meu Like</div></div>
</div>

<div class="likeLiga" style="cursor:pointer; margin-top:9px; display:inline-block;"> 
Remover 
</div>


 

 

Se você poder contralar e eles não aparecem dinãmicamente você pode adicionar uma segunda classe para tratá-los individualmente

 


<div id="containes">
<div class="conteudo"><div class="bt-recomendar-small bt-primeiro">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small bt-segundo">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small etc..">Meu Like</div></div>
<div class="conteudo"><div class="bt-recomendar-small etc..">Meu Like</div></div>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos partir para as Imagens :lol:

 

problemak.png

 

Esse exemplo é do multi botões... O HTML deles é assim - default

 

<form class='likeLiga' type-id='114' type-like='doencas' value-type-count-like='0'>
  <div class='small cursor' />Recomendar</div>
</form>
  <div class='recomendacoes_box'>
    <div class='rec-tip-l'></div>
      <div class='rec-tip-m 114'>Seja o 1º</div>
    <div class='rec-tip-r'></div>
  </div>

 

Agora, na minha página de detalhes,

problema2y.png

 

Ele gera dois botões, mas os dois são iguais, sem nenhum tipo de modificação, mas é como falei, o código que fiz JS funciona para os dois, mas quando é nessa página de detalhes, independente de qual eu cliquei, queria fazer com que os dois tivessem sido clicados, mas que isso não influência-se a da listagem, que são botões individuais.

 

Obrigado.

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.