2012-08-31 21 views
10

OK, así que esto suena simple, usando la función 'clic' de jquery.¿Cómo hacer clic en un enlace y obtener su color?

Lo que quiero es que el color ORIGINAL del enlace NO sea su color suspendido, p. si el enlace es de color verde con un estado de vuelo estacionario de color naranja, espero obtener el color VERDE.

He intentado lo mejor que pueda y mostrado en una cualquiera fiddle

tiene alguna idea?

EDIT: disculpas, sino como una serie de ojos de águila haber visto (gracias a ellos por señalarlo) verde es en realidad "rgb (0, 128, 0)", NO rgb (0, 255, 0) como se muestra en mi violín original.

+2

'' my link karim79

+0

verde es '(0, 128, 0)' para mí, por cierto. – pimvdb

Respuesta

14

tienda en jQuery's data objeto:

$('a').each(function() { 
    $(this).data('color', $(this).css('color')); 
}) 
.click(function() { 
    alert($(this).data('color')); 
}); 

Aquí tiene su violín: http://jsfiddle.net/sVDYe/4/


Para un mejor rendimiento, que haría uso de the static methods en el bucle. They're much faster:

$('a').each(function() { 
    $.data(this, 'color', $.css(this, 'color')); 
}); 

Aquí está el violín: http://jsfiddle.net/sVDYe/13/

+0

¡¡Ooooooh, eso es realmente inteligente !! Busqué por todos lados durante días y me golpeó cada vez, ¡gracias! – Steve

-1

cheque esto va a trabajar para asegurarse

<script> 
    $("a").click(function() { 
     $(this).toggleClass("colorclass"); 
    }); 
</script> 
+2

No es exactamente lo que estoy buscando, estoy tratando de OBTENER el color, no DEJARLO ni alternarlo, pero gracias de todos modos. – Steve

1

Pruebe debajo enfoque ..

DEMO: http://jsfiddle.net/sVDYe/33/

$("a").click(function(e) { 
    e.preventDefault(); 
    var tmpLink =$(this).clone(); 
    tmpLink.appendTo($(this).parent());  
    var acolor = tmpLink.css("color"); 
    tmpLink.remove(); 

    if (acolor == 'rgb(255, 165, 0)') { 
     alert('wrong color - its ORANGE =' + acolor); 
    } else if (acolor == 'rgb(0, 128, 0)') { 
     alert('CORRECT color - its GREEN =' + acolor); 
    } 
}); 

Como pimvdb señaló .. El verde es RGB(0,128,0)

+0

'appendTo ('body')'? La cascada realmente no funciona de esa manera ... –

+0

@JosephSilber ¿A qué te refieres? –

+0

Me temo que esto no funcionará porque las reglas de CSS pueden ser bastante específicas. Por ejemplo, esto falla en caso de que la regla sea '.container> a {color: ...} 'porque no coincide con el clon. – pimvdb

1

Puede manejar el cambio de color usando jQuery en lugar de CSS y almacenarla:

http://jsfiddle.net/sVDYe/20/

var hoverColor; 

$("a").hover(function() { 
    hoverColor = $(this).css("color"); 
    $(this).css("color", 'orange'); 
}, function() { 
    $(this).css("color", 'green'); 
}); 

$("a").click(function (e) { 
    e.preventDefault(); 
    var acolor = hoverColor; 
    if (acolor == 'rgb(255, 165, 0)') { 
    alert('wrong color - its ORANGE =' + acolor); 
    } else if (acolor == 'rgb(0, 128, 0)') { 
    alert('CORRECT color - its GREEN =' + acolor); 
    } 
}); 

también es verde

rgb (0, 128, 0)

+0

Gracias. Me perdí esa, tienes razón. – Steve

Cuestiones relacionadas