2014-02-06 134 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的财产,除非有做的方法所以。