ОК, просто в этой ситуации я сделал следующее:
Атрибут класса определяет функцию элемента: контроллер предназначен для вызова виджета colorpicker, sample (я выделил несколько разных из них, чтобы показать, как цвет работает в разных контекстах) предназначен для демонстрации того, как он выглядит, а hexcolor - для отображения RGB-кода цвета, который люди могут использовать в своих конфигах.
Атрибут Name точно определяет, какой цвет необходимо изменить с помощью контроллера, например,
<span class="controller" name="red">██</span>
<span class="controller" name="blue">██</span>
<span class="colorsample" name="red">██</span>
<span class="colorsample" name="blue">██</span>
<span class="hexcolor" name="red">#FF0000</span>
<span class="hexcolor" name="blue">#0000FF</span>
Поэтому я выполняю обработку строк в JavaScript, но это не разбиение массива, а тривиальная конкатенация, например так:
//getting name
var myName = $(this).attr("name");
//making a selector for sample
var sampleSelector = "\'span[class=\"sample\"][name=\"" + myName + "\"]\'";
//making a selector for hexcode
var hexColorSelector = "\'span[class=\"hexcolor\"][name=\"" + myName + "\"]\'";
Позже они могут быть использованы в селекторах нескольких атрибутов, здесьопция для виджета выбора цвета:
onChange: function (hsb, hex, rgb) { //that's from widget docs
$(sampleSelector).css('color', '#' + hex);
$(hexColorSelector).html('#' + hex);
}
Если это не так уж и плохо, я бы с этим согласился.Если это так, я переписал бы код и принял бы исправление с объяснением почему.