Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在寻找在spectrumjs中使用相同类名的两个不同按钮上触发单独事件的方法_Javascript_Jquery - Fatal编程技术网

Javascript 正在寻找在spectrumjs中使用相同类名的两个不同按钮上触发单独事件的方法

Javascript 正在寻找在spectrumjs中使用相同类名的两个不同按钮上触发单独事件的方法,javascript,jquery,Javascript,Jquery,我使用的是spectrumjs,当单击一个按钮时,它会调用两个按钮的代码。如果我可以更改其中一个按钮的类名,问题就会解决,但是颜色选择器是动态生成的,我不知道如何重新配置代码来实现这一点 以下是我所拥有的: $(".sp-choose").click(function(){ bgColor = $("#custom").spectrum("get"); bgColor = bgColor.toHexString(); canvas.backgroundColor = bg

我使用的是spectrumjs,当单击一个按钮时,它会调用两个按钮的代码。如果我可以更改其中一个按钮的类名,问题就会解决,但是颜色选择器是动态生成的,我不知道如何重新配置代码来实现这一点

以下是我所拥有的:

$(".sp-choose").click(function(){
    bgColor = $("#custom").spectrum("get");
    bgColor = bgColor.toHexString();
    canvas.backgroundColor = bgColor;
    canvas.setBackgroundImage();
    canvas.renderAll();
});

$(".sp-choose").click(function() {
    newColor = $("#custom2").spectrum("get");
    newColor = newColor.toHexString();
    canvas.freeDrawingBrush.color = newColor;
    drawColor();
    canvas.renderAll();
});

当我更改文本的颜色并单击sp choose按钮时,我会丢失原始背景色,因为这两种颜色都被调用。在最初更改颜色,然后更改背景色或文本颜色后,不会发生这种情况。大多数情况下,在第一次更改文本颜色后,我会丢失背景。

如果只有两个按钮,并且您不需要漂亮的解决方案,您可以通过索引将这两个按钮分开:

$(".sp-choose").eq(0).click(function(){
    bgColor = $("#custom").spectrum("get");
    bgColor = bgColor.toHexString();
    canvas.backgroundColor = bgColor;
    canvas.setBackgroundImage();
    canvas.renderAll();
});

$(".sp-choose").eq(1).click(function() {
    newColor = $("#custom2").spectrum("get");
    newColor = newColor.toHexString();
    canvas.freeDrawingBrush.color = newColor;
    drawColor();
    canvas.renderAll();
});

如果只有两个按钮

$(".sp-choose").click(function (e) {
    if (this == $(".sp-choose")[0]) {
        bgColor = $("#custom").spectrum("get");
        bgColor = bgColor.toHexString();
        canvas.backgroundColor = bgColor;
        canvas.setBackgroundImage();
        canvas.renderAll();
    }
});

$(".sp-choose").click(function (e) {
    if (this == $(".sp-choose")[1]) {
        newColor = $("#custom2").spectrum("get");
        newColor = newColor.toHexString();
        canvas.freeDrawingBrush.color = newColor;
        drawColor();
        canvas.renderAll();
    }
});
或类似的,将工作。第一个按钮将运行第一个功能,第二个按钮将运行第二个功能。您可以将两者合并为一个函数,并在其中切换

$(".sp-choose").click(function (e) {
    if (this == $(".sp-choose")[0]) {
        bgColor = $("#custom").spectrum("get");
        bgColor = bgColor.toHexString();
        canvas.backgroundColor = bgColor;
        canvas.setBackgroundImage();
        canvas.renderAll();
    }

    if (this == $(".sp-choose")[1]) {
        newColor = $("#custom2").spectrum("get");
        newColor = newColor.toHexString();
        canvas.freeDrawingBrush.color = newColor;
        drawColor();
        canvas.renderAll();
    }
});
像这样


将事件附加一次并在两个案例中处理您的逻辑这与“fabricjs”有关吗?