2012-08-31 18 views
10

OK, do đó, điều này nghe có vẻ đơn giản, sử dụng chức năng 'click' của jquery.Làm thế nào để bấm vào một liên kết và nhận được màu sắc của nó?

Điều này là tôi muốn màu ORIGINAL của liên kết KHÔNG có màu được di chuột - ví dụ: nếu liên kết có màu xanh lá cây với trạng thái di chuột cam, tôi sẽ lấy màu xanh lá cây.

tôi đã cố gắng một cách tốt nhất như tôi có thể và hiển thị nó trong một Bất cứ ai fiddle

có bất kỳ ý tưởng?

CHỈNH SỬA: xin lỗi, nhưng như một số mắt đại bàng đã phát hiện (nhờ chúng chỉ ra) màu xanh lá cây thực sự là "rgb (0, 128, 0)", KHÔNG rgb (0, 255, 0) như thể hiện trong fiddle ban đầu của tôi.

+2
+0

Xanh là '(0, 128, 0)' đối với tôi, bằng cách này. – pimvdb

Trả lời

14

Lưu trữ nó trong jQuery's data đối tượng:

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

Dưới đây là fiddle của bạn: http://jsfiddle.net/sVDYe/4/


Đối với hiệu suất tốt hơn, tôi muốn sử dụng the static methods trong vòng lặp. They're much faster:

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

Đây là fiddle: http://jsfiddle.net/sVDYe/13/

+0

Ooooooh, điều đó thực sự thông minh !! Tôi đã tìm kiếm ở khắp mọi nơi cho điều đó trong nhiều ngày và nó đánh bại tôi mọi lúc - cảm ơn! – Steve

-1

việc kiểm tra này nó sẽ làm việc chắc chắn

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

Không hoàn toàn những gì tôi đang tìm kiếm - Tôi đang cố gắng TẢI màu, không được đặt hoặc chuyển đổi, nhưng cảm ơn. – Steve

1

Hãy thử bên dưới cách tiếp cận ..

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

Như pimvdb chỉ ra .. Màu xanh lá cây là RGB(0,128,0)

+0

'appendTo ('body')'? Dòng thác không thực sự hoạt động theo cách đó ... –

+0

@JosephSilber Ý của bạn là gì? –

+0

Tôi e rằng điều này sẽ không hoạt động vì quy tắc CSS có thể khá cụ thể. Ví dụ, điều này không thành công trong trường hợp quy tắc là '.container> a {color: ...} 'bởi vì nó không khớp với bản sao. – pimvdb

1

Bạn có thể xử lý các thay đổi màu sắc sử dụng Jquery thay vì css và lưu nó:

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

Ngoài ra màu xanh lá cây là

rgb (0, 128, 0)

+0

Cảm ơn - Tôi đã bỏ lỡ điều đó - bạn nói đúng. – Steve