Foros del Web » Programando para Internet » Jquery »

Jquery no me funciona

Estas en el tema de Jquery no me funciona en el foro de Jquery en Foros del Web. tengo un problema quiero darle un efecto de fadeIn a unos div que se repiten con el mismo id pero solo me funciona para el ...
  #1 (permalink)  
Antiguo 21/03/2012, 23:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 15 años, 2 meses
Puntos: 1
Pregunta Jquery no me funciona

tengo un problema quiero darle un efecto de fadeIn a unos div que se repiten con el mismo id pero solo me funciona para el primero pero no para los demas, la idea seria ponerle diferentes id, pero el id del div guardara imagenes que se cargaran por eso se van a duplicar varias veces cuando cargue de la BD y por eso queria el mismo efecto para todas.

<script>
$(document).ready(function(){

$("#bg_foto").mouseenter(function(e){
$("#foto").fadeIn(500);
});

});
</script>


<body>

<div id="bg_foto">
<div id="foto"><img src.....></div>
</div>

<div id="bg_foto">
<div id="foto"><img src.....></div>
</div>


<div id="bg_foto">
<div id="foto"><img src.....></div>
</div>

</body>

ah! me olvide decir que hay varios div osea no me funciona tampoco $("div") y luego usar el $(this) para escojer el que esta teniendo el evento.

Gracias por las respuestas :)
  #2 (permalink)  
Antiguo 22/03/2012, 18:50
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 19
Respuesta: Jquery no me funciona

Los ids son únicos por página, no puedes tener un id repetido. Usa una clase.
  #3 (permalink)  
Antiguo 22/03/2012, 22:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Jquery no me funciona

gracias por tu respuesta, pero si se pueden tener div con el mismo id, con css me funciona bien el efecto pero con #capa:hover pero es un efecto muy simple, me gustaria usar el FadeIn de jquery pero como mencione solo me funciona con el primer div los demas no me funcionan, como podria hacer que todos los div tengas ese efecto.
  #4 (permalink)  
Antiguo 23/03/2012, 01:28
Avatar de gatero  
Fecha de Ingreso: febrero-2012
Ubicación: Distrito Federal
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Jquery no me funciona

Se pueden tener divs con el mismo id, pero para que jQuery generalice debes usar una clase, si lo haces con id solo usara el primer elemento que lo tenga.
  #5 (permalink)  
Antiguo 23/03/2012, 06:08
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 19
Respuesta: Jquery no me funciona

Me corrijo, no se debe tener un id repetido, ya que no es HTML válido. Si lo repites, puedes encontrarte errores inesperados.

This attribute assigns a name to an element. This name must be unique in a document.

Usa una clase.
  #6 (permalink)  
Antiguo 23/03/2012, 06:16
Avatar de Shirak2  
Fecha de Ingreso: abril-2008
Ubicación: Granada
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 19
Respuesta: Jquery no me funciona

HTML 5
  #7 (permalink)  
Antiguo 23/03/2012, 07:25
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 2 meses
Puntos: 265
Respuesta: Jquery no me funciona

johannes13 que en CSS puedas hacer funcionar tus estilos usando mismos ids para etiquetas HTML no quiere decir que en Jquery funcionen.
Tal como dijeron arriba, por convencion, debes unificar el id de cada etiqueta, y si eso representa que tengas que cambiar tu CSS ... deberias hacerlo igual, no es una buena practica no tocar el codigo solo "porque funciona" , en la mayoria de los casos (y en el tuyo en especial) es logico que el codigo se pueda mejorar, y con ello mejorar el conocimiento y experiencia sobre lo que estas viendo, y para la proxima hacerlo mejor.

Si cambias tus id=foto por class=foto y tu id=bg_foto por class=bg_foto, y pones este codigo, quizas te funcione (digo funcione porque no lo he probado)

Código HTML:
Ver original
  1. $(document).ready(function(){
  2.  
  3. $(".bg_foto").each(function(){
  4.   $(this).bind("mouseenter",function(){
  5.     $(this).find(".foto").fadeIn(500);
  6.   });
  7. });
  8.  
  9. });
  10.  
  11.  
  12.  
  13. <div class="bg_foto">
  14. <div class="foto"><img src.....></div>
  15. </div>
  16.  
  17. <div class="bg_foto">
  18. <div class="foto"><img src.....></div>
  19. </div>
  20.  
  21.  
  22. <div class="bg_foto">
  23. <div class="foto"><img src.....></div>
  24. </div>
  25.  
  26. </body>

El CSS seguro se te va a desmontar, pero ya dependera de vos querer cambiarlo o no, o buscar la manera de que jquery funcione de la manera que vos quieras.

Saludos.
  #8 (permalink)  
Antiguo 24/03/2012, 22:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 15 años, 2 meses
Puntos: 1
De acuerdo Respuesta: Jquery no me funciona

muchas gracias, nunca me puse a pensar en hacerlo con class, su puse si no funcionaba con id nica funcionaria con class, pero luego de hacer algunas cositas con class me llego a salir el efecto deseado, jeje muchas gracias por la respuesta

para otras personas interesadas asi nomas era.

$(".bg_foto").mouseenter(function(e){
$(".foto",$(this)).fadeIn(500);
});
  #9 (permalink)  
Antiguo 04/01/2013, 06:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Jquery no me funciona

Yo lo hago funcionar así la misma clase y luego this.

<script type="text/javascript">
var x; //variable
x=$(document); // Nueva copia de objeto documento
x.ready(resaltar); //Cuando el objeto este cargado en tal caso utilizaremos la función inicializar
function resaltar()
{
var x;
x=$(".link");
x.hover(resaltame);
x.mouseleave(salir);
}
function resaltame()
{
var x;
x=$(this);
x.css("color","yellow");
}
function salir()
{
var x;
x=$(this);
x.css("color","white");

}

Etiquetas: imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:42.