Ir para conteúdo

POWERED BY:

Arquivado

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

Teixeira Junior Scorpion

Bug Interessante neste Código jQuery

Recommended Posts

iae Galera Beleza??

Bom vim aqui pra ve se esse pessoal me ajuda

ja tentei diversas vezes ajeitar esse bug e ainda não consegui então vamos la

$hoverq = "SELECT * FROM usuarios WHERE nome = '".$row['usuario_perguntou']."'";
$hovers = mysql_query($hoverq);
while($hoverf = mysql_fetch_array($hovers)){
echo "<div id='bug'><div id='hover' style='display:none;'><div id='bg' style='position:relative;left:-3px;top:1px;width:371px; height:100px;'><img style='width:364px; height:150px;' src='".$hoverf['background']."'/></div><div id='useravatar' style='position:relative; left:-115px;top:-10px;'><img src='".$hoverf['avatar']."' style='margin-top:3px; margin-left:3px;' width='100' height='100'/></div><div style='position:relative; left:-10px; top:-125px;'><h3>".$hoverf['nome']."</h2><div style='font-size:10px; width:200px; color:#ccc; word-wrap:break-word; position:relative; top:-10px;left:60px;'><b>".$hoverf['motto']."</b></div></div></div></div>";
}

Bom como cês viram no codigo acima eu faço um WHILE do PHP

pra exibir os resultados e exibe normalmente

agora vamos ao jQuery:

<script>
$("#hover").hide();
$("#perguntou").hover(function(){
	$("#hover").show("slow")
});
$("#hover").mouseout(function(){
	$(this).hide("slow");
});
</script>

se vocês entenderem o código faz apenas o seguinte

esconde a div #hover

quando passar o mouse por cima da div perguntou mostra a div #hover

quando o mouse sair da div #hover

esconde a div #hover

Certo né?

agora oque acontece e o seguinte rodando essa pagina

o código só faz isso

uma vez por exemplo

tenho 6 resultados do while

o código só e funcional no primeiro

Bom e isso ai

se Poderem Desde Já Agradeço!

Grande abraço!

Só Lembrando o Código php não esta todo ai mais essa é a parte que importa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

a questão é que você não pode repetir o atributo ID:

<div id='hover'

trabalhe com classes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

o atributo id de cada elemento deve ser único, conforme mencionado no post #2

 

dentro do laço de repetição adicione um número para diferenciar os ids

 

$i = 0;
while($hoverf = mysql_fetch_array($hovers)){
echo "<div id='bug".$i."'><div id='hover".$i."' style='di.....

$i++;
}

 

a saída HTML será:

<div id='bug0'><div id='hover0' style='di.....
<div id='bug1'><div id='hover1' style='di.....
<div id='bug3'><div id='hover3' style='di.....

 

veja agora que isso vai te dar mais trabalho, porque será necessário criar os css de acordo com cada id

 

$("#hover0").hide();
       $("#perguntou0").hover(function(){
               $("#hover0").show("slow")
       });
       $("#hover0").mouseout(function(){
               $(this).hide("slow");
       });


$("#hover1").hide();
       $("#perguntou1").hover(function(){
               $("#hover1").show("slow")
       });
       $("#hover1").mouseout(function(){
               $(this).hide("slow");
       });

se tiver 50, serão escritos 50 desses aí.. redundante..

 

 

por isso, o modo mais elegante e até correto de se resolver é aplicar o "this" no momento do evento...

para atribuir os eventos, utilize os recursos do jquery (uma vez que já está utilizando) inclusive para setar o estilo css, deixando o código mais limpo

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.