Проблема в этой строке:
$(".colors").css("background-color", color);
Код $(".colors")
находит все элементы с именем класса colors
. Поскольку каждой кнопке назначен класс colors
, возвращаются все кнопки, что приводит к тому, что все кнопки имеют одинаковый цвет.
Ваш click
-handler передает идентификатор кнопки в качестве первого аргумента, чтобы вы могли используйте это в своем запросе, чтобы ограничить объем изменения цвета этой кнопки. То есть измените селектор на #BUTTONID.colors
:
colorclick: function(e, color) {
$(`#${e}.colors`).css("background-color", color);
}
demo
Однако следует избегать манипуляций с DOM (с jQuery), потому что эти изменения будут перезаписаны, если Vue повторно визуализирует компонент. Обычно есть способ переписать код, не манипулируя DOM. Например, вы можете применить class
на основе переменной, установленной вашим click
-обработчиком.