2012-08-31 6 views
10

OK, quindi sembra semplice, utilizzando la funzione "clic" di jQuery.Come fare clic su un link e ottenere il suo colore?

Il fatto è che voglio il colore originale del collegamento non il suo colore è passato il mouse - per esempio se il collegamento è verde con uno stato di passaggio del mouse di arancione, I wat per afferrare il colore VERDE.

Ho provato come meglio che posso e mostrato in un fiddle

Chiunque ha ottenuto tutte le idee?

EDIT: scuse, ma come una serie di occhi d'aquila hanno individuato (grazie a loro per segnalarlo) verde è in realtà "rgb (0, 128, 0)", NON rgb (0, 255, 0) come mostrato nel mio violino originale.

+2

'' my link karim79

+0

Verde è '(0, 128, 0)' per me, tra l'altro. – pimvdb

risposta

14

conservarlo in jQuery's data oggetto:

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

Ecco il suo violino: http://jsfiddle.net/sVDYe/4/


Per ottenere migliori prestazioni, userei the static methods nel ciclo. They're much faster:

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

Ecco il violino: http://jsfiddle.net/sVDYe/13/

+0

Ooooooh, è davvero intelligente !! Ho cercato ovunque per giorni e mi ha battuto ogni volta - grazie! – Steve

-1

verifica questo funzionerà di sicuro

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

Non proprio quello che sto cercando - Sto cercando di ottenere il colore, non impostarlo o attivarlo, ma grazie comunque. – Steve

1

Prova sotto approccio ..

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); 
    } 
}); 

Come pimvdb rilevare .. Il verde è RGB(0,128,0)

+0

'appendTo ('body')'? La cascata non funziona in questo modo ... –

+0

@JosephSilber Cosa intendi? –

+0

Ho paura che questo non funzioni perché le regole CSS possono essere abbastanza specifiche. Ad esempio, questo fallisce nel caso in cui la regola sia '.container> a {color: ...} 'perché non corrisponde al clone. – pimvdb

1

È possibile gestire il cambiamento di colore utilizzando jQuery al posto di CSS e conservarla:

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); 
    } 
}); 
.210

anche il verde è

rgb (0, 128, 0)

+0

Grazie - ho perso quello - hai ragione. – Steve

Problemi correlati