我有一个颜色选择器,人们可以选择一种颜色,因此,每当用户超过颜色时,它将颜色十六进制代码发送到服务器。
现在我以为我有一个解决方案,但是在客户端它可以工作,因为我使用delete
,但是每次我都不确定时(我不太喜欢)。
因此,我希望功能可以像这样,用户可以选择一种颜色,并且在关闭后,必须在单击关闭按钮后将最新的颜色发送到服务器。
现在它将所有选择的颜色代码发送到服务器,我如何避免这种情况?
$("#color").farbtastic(function(a) {
color = a;
$(".ui-dialog-titlebar-close").click(function() {
socket.emit('send color',{type: 'color', value: a}, function(data){
if(data){
if(data.result=='success'){
console.log(a);
delete color;
}
}
});
});
});
最佳答案
每当用户选择一种颜色时,都会调用添加到Farbtastic中的回调,并且当您在该回调中绑定事件处理程序时,每次有人选择一种颜色时都会添加一个新的click事件处理程序,这似乎是个坏主意。
分离事件处理程序
$("#color").farbtastic(function(a) {
$("#color").data('fcolor', a);
});
$(".ui-dialog-titlebar-close").click(function() {
var color = $("#color").data('fcolor');
socket.emit('send color',{type: 'color', value: color}, function(data){
if(data){
if(data.result=='success'){
console.log(color);
}
}
});
});
FIDDLE