2012-08-31 5 views
10

OK, das klingt einfach, mit jquery 'Klick' Funktion.Wie man auf einen Link klickt und seine Farbe bekommt?

Die Sache ist, ich möchte die ORIGINAL Farbe der Verbindung nicht seine schwebte Farbe - z. Wenn die Verbindung grün ist und ein schwebender Zustand von orange ist, nehme ich die GRÜNE Farbe.

Ich habe so gut versucht, wie ich kann und es in einem Ideen bekam fiddle

Jeder gezeigt?

EDIT: Entschuldigungen, sondern als eine Reihe von Adleraugen gesichtet hat (dank sie es für den Hinweis auf) grün ist eigentlich "rgb (0, 128, 0)", NICHT rgb (0, 255, 0) wie in meiner ursprünglichen Geige gezeigt.

+2

'' my link karim79

+0

Grün ist '(0, 128, 0)' für mich, nebenbei bemerkt. – pimvdb

Antwort

14

Bewahren Sie es in jQuery's data Objekt:

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

Hier ist Ihre Geige: http://jsfiddle.net/sVDYe/4/


Für eine bessere Leistung, ich the static methods in der Schleife verwenden würde. They're much faster:

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

Hier ist die Geige: http://jsfiddle.net/sVDYe/13/

+0

Ooooooh, das ist wirklich schlau !! Ich habe tagelang überall danach gesucht und es hat mich jedes Mal geschlagen - danke! – Steve

-1

Check diese es sicher

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

Nicht ganz das, was ich suche - ich versuche, die Farbe zu bekommen, nicht SET oder toggle es, aber trotzdem danke. – Steve

1

Versuchen unter Ansatz ..

DEMO arbeiten: 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); 
    } 
}); 

Wie pimvdb darauf hingewiesen .. Green ist RGB(0,128,0)

+0

'appendTo ('Körper')'? Die Kaskade funktioniert nicht so ... –

+0

@JosephSilber Was meinst du? –

+0

Ich fürchte, das wird nicht funktionieren, weil CSS-Regeln ziemlich spezifisch sein können. Zum Beispiel schlägt dies fehl, wenn die Regel '.container> a {color: ... ist.} 'weil es nicht mit dem Klon übereinstimmt. – pimvdb

1

Sie können die Farbe ändern umgehen mit jQuery anstelle von CSS und speichern:

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

auch grün ist

rgb (0, 128, 0)

+0

Danke - das habe ich verpasst - du hast Recht. – Steve