我有.box
.color_container
內的元素的數量。我寫了這個函數,當我點擊其中一個框時,我可以改變它的背景顏色。這適用於一個框,但是當我點擊另一個框並更改其顏色時,我點擊的所有其他框也受到影響。多個ids影響,當我只想改變一個(javascript和jquery)
我只想改變剛剛點擊的框的顏色。這是我的代碼。非常感謝您提供任何幫助。
function defineColor(){
$(".color_container .box").click(function(){
var boxToModify = $(this);
if($(this) .hasClass("plus")){
$(this) .css("background-color", "rgb(255, 255, 255)")
.removeClass("plus")
.contents().remove();
};
var rgb = $(this).css("background-color").match(/\d{1,3}/g);
$("#box_r input").val(rgb[0]);
$("#box_g input").val(rgb[1]);
$("#box_b input").val(rgb[2]);
$(".box input").keyup(function(event){
var value = $(this).val();
if(value > 255 || isNaN(value)){
alert("Error! Input must be a number 255 or less.");
}else if(value >= 0 && value <=255){
var r = $("#box_r input").val();
var g = $("#box_g input").val();
var b = $("#box_b input").val();
var output = "rgb(" + r + ", " + g +", " + b + ")";
$(boxToModify).css("background-color", output);
};
});
});
};
你可以發佈你的HTML。您可能有重複的元素符合您的選擇器標準。 – 2012-04-05 00:29:25
這不是問題,但請注意'$(boxToModify)'是不必要的,因爲'boxToModify'已經是一個jQuery對象(第三行代碼)。所以,你可以做'boxToModify.css(...' – 2012-04-05 00:31:02
你不應該在處理程序中添加處理程序,你的點擊處理程序會創建一個鍵,這是不好的 – AutoSponge 2012-04-05 00:33:49