Foros del Web » Programando para Internet » Jquery »

Comprovar clase con .hasClas

Estas en el tema de Comprovar clase con .hasClas en el foro de Jquery en Foros del Web. Hola chicos. Estoy intentando comprovar si un elemento tiene una clase para hacer una cosa u otra... Vamos un if else en toda regla pero ...
  #1 (permalink)  
Antiguo 13/06/2015, 02:19
 
Fecha de Ingreso: octubre-2014
Ubicación: Reino Unido
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 0
Comprovar clase con .hasClas

Hola chicos.

Estoy intentando comprovar si un elemento tiene una clase para hacer una cosa u otra... Vamos un if else en toda regla pero no lo consigo.
Probando probando he acabdo con este codigo:

Código:
   
 // Convertir las imagenes cargadas en el post en enlaces
      if (!$('#article img').hasClass('link')) {
        $('#article img').each( function() {
          var $img = $(this),
          href = $img.attr('src');
          $img.wrap('<a href="#" type="button" data-toggle="modal" data-target="#post_image-modal" data-post_image="' + href + '"></a>');
      });
      }
Si "#article img" no tiene la clase "link" tiene que hacer lo que sigue que es envolverla con el "a href" y si tiene la clase no hacer nada.

Sabeis que es lo que hago mal?

Última edición por The_uncle; 13/06/2015 a las 02:24
  #2 (permalink)  
Antiguo 13/06/2015, 03:22
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Comprovar clase con .hasClas

El $ selector del if devuelve una colección, pero tú ejecutas el hasClass que funciona sobre un sólo objeto. jQuey en vez de tirar error, lo que hace es hacer el hasClass únicamente con el primer objeto de la colección. Así que supongo que en tu html, el primer #article img que encuentra, no tiene la clase link, asi que no entra. Si el primer objeto la tuviera, entonces estaría metiéndole el enlace a todas las imágenes indiscriminadamente.

Borra el if. Y luego:
$('#article img.link').each( function() { ...
  #3 (permalink)  
Antiguo 13/06/2015, 03:26
 
Fecha de Ingreso: octubre-2014
Ubicación: Reino Unido
Mensajes: 8
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Comprovar clase con .hasClas

Gracias por tu respuesta marlanga. Me has enseñado algo mas queno sabía :)

Al final lo he solucionado así:

Código:
    $('#article img:not(.link').each( function() {
      var $img = $(this),
      href = $img.attr('src');
      $img.wrap('<a href="#" type="button" data-toggle="modal" data-target="#post_image-modal" data-post_image="' + href + '"></a>');
        //$img.wrap('<a href="' + href + '" target="_blank"></a>');
      });
Muchas gracias

Etiquetas: elseif, javascript
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 02:31.