我有一个颜色选择器,人们可以选择一种颜色,因此,每当用户超过颜色时,它将颜色十六进制代码发送到服务器。
现在我以为我有一个解决方案,但是在客户端它可以工作,因为我使用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

07-24 17:32