2014-02-06 183 views
2

如何使用jQuery來更改對象的值。我有這個對象,我知道選擇器,但是如何改變點擊的RGB值?我正在嘗試更改penColor。四個列表項目(黃色,綠色,藍色,橙色)上有數據顏色。所以當用戶點擊黃色時,js對象會改變對象的值?Jquery更改對象的值

var signaturePad = new SignaturePad(canvas, { 
    minWidth: 2, 
    maxWidth: 5, 
    penColor: "rgb(66, 133, 244)" 
}); 

var selectedColor = $(e.currentTarget).data('color'); 
$('.initial').css('color', selectedColor); 

而這裏的標記:

<ul class="global-color"> 
    <li class="yellow-pick" data-color="#f8c90d"></li> 
    <li class="green-pick" data-color="#3dae49"></li> 
    <li class="orange-pick" data-color="#e87425"></li> 
    <li class="blue-pick" data-color="#009cc5"></li> 
</ul> 
+0

您不能更改已傳遞給「SignaturePad」類的對象,除非有內置方法可以這樣做, – adeneo

回答

1

jsFiddle Demo

您可以在運行時改變signaturepad.penColor屬性(在API支持)。爲了在十六進制)轉化爲RGB(你應該使用由另一個人在這裏掛了答案以及

hexToRgb改編自:https://stackoverflow.com/a/5624139/1026459

function hexToRgb(hex) { 
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); 
return result ? "rgb("+parseInt(result[1], 16)+ 
    ","+parseInt(result[2], 16)+ 
    ","+parseInt(result[3], 16)+")" 
    : null; 
} 

因此,使用這種和點擊分配財產最終看起來像這樣:

$('.global-color li').click(function(){ 
$('.on').removeClass('on');//demo highlighting only 
var $t = $(this); 
$t.addClass('on');//demo highlighting only 
var selectedColor = $t.data('color');//read data 
signaturePad.penColor = hexToRgb(selectedColor);//assign to pen color 
}); 
0

如果你想改變penColor的顏色,那麼你不得不暴露在SignaturePad類像這樣

SignaturePad.prototype.setColor(color) { 
    this.penColor = color; // Depends on how you have stored penColor internally 
} 

的方法和從您的點擊處理程序調用此方法。

$('.global-color li').click(function(e) { 
    var color = e.target.getAttribute('data-color'); 
    signaturePad.setColor(color); 
}); 
0

試試這個

$('ul.global-color li').click(function(event){ 
    // Change color here 
    var color = $(this).data('color'); 
    signaturePad.penColor = hexToRGB(color); 
} 

爲JavaScript十六進制RGB功能我想看看RGB to Hex and Hex to RGB

正如上面提到的,你不能改變signaturePad的財產,除非有做的方法所以。