Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Problema con validación de clase con if jquery

Estas en el tema de Problema con validación de clase con if jquery en el foro de Jquery en Foros del Web. Hola, buen día a todos. He estado tratando de averiguar el porque un pedazo de código no realiza lo que quiero. Lo que intento hacer ...
  #1 (permalink)  
Antiguo 10/09/2013, 23:25
 
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad de México
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Problema con validación de clase con if jquery

Hola, buen día a todos. He estado tratando de averiguar el porque un pedazo de código no realiza lo que quiero.

Lo que intento hacer es que valide si un vínculo <a> posee una clase en específico, y en base a ello abrir dicho vínculo en una nueva ventana. Todo esto es para vínculos externos.

Resulta que solo 2 vínculos en la página html poseen dicha clase, pero todos los vínculos se abren en una nueva ventana, aún cuando no posean la clase. No comprendo porque lo hace, verifico la sintaxis y no encuentro problema, tampoco tengo errores en la consola.

He aquí el código:

Código:
$(document).ready(function() {
    
    $("a").on("click", function(e){
        e.preventDefault();
        var liga = $(this).attr("href");
        if ($("a").hasClass("ext"))
        {
            window.open(liga, "_blank");
        }
    });
});
De antemano gracias por su ayuda y consejos. Es un documento .js enlazado al html. Si está funcionando ya que realiza el preventDefault
  #2 (permalink)  
Antiguo 11/09/2013, 00:57
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Problema con validación de clase con if jquery

Hola:

Si en el if pones $("a") estás trayendo otra vez TODOS los enlaces en vez de solo en el que se ha hecho click, por lo que hasClass() no tengo muy claro que hace sobre un array de elementos <a>, pero imagino que te devolverá algo que no puede considerarse false ya que algunos de los enlaces tiene esa clase.

En el if, debes debes usar $(this) en vez de $("a"), ya que en esa funcion handler, this hace referencia al <a> que ha disparado el evento

Código Javascript:
Ver original
  1. if ($(this).hasClass("ext")) {
  2.    ....
  3. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 11/09/2013, 11:03
 
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad de México
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Problema con validación de clase con if jquery

Muchas gracias por la pronta respuesta, hice la modificación que me dijiste y funcionó de maravilla. Posiblemente es un error muy tonto o descuidado, espero mejorar y no cometerlos más. Solo me quedaría cerrar el tema.

Nuevamente muchas gracias. Por último algún buen texto o referencia donde pueda encontrar consejos para evitar atrocidades como la que estaba cometiendo.

Etiquetas: clase, funcion, html, javascript, js
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 13:35.