В целом, проблема такая. Есть div, внутри которого можно изменять цвета для этого div через selector/radio. Значения фона (background-color) передаются на сервер в БД. Цвета меняются хорошо, но до перезагрузки страницы, т.е. после нажатия F5, background-color в div не меняется. После рефреша, background-color остаётся всегда тот, который был последним до рефреша. Но, на сервер, отправляется корректное значение, которое выбрал пользователь.
Проблема где-то в этом куске, видимо.
....
var selectorCache = {};
function selectElement(htmlId) {
if (htmlId in selectorCache) {
console.log('selectorCache');
console.log(selectorCache[htmlId]);
return selectorCache[htmlId];
}
var $field = $('#' + htmlId);
selectorCache[htmlId] = $field;
return $field;
}
...
setValue: function (htmlId, value) {
$field=selectElement(htmlId);
var $child = $field.children();
$child.remove();
$field.css({'background-color': value.value});}
Почему считаю что в нём, а потому что, если вместо $field=selectElement(htmlId) использовать даже вот так $field=document.getElementById('htmlId');, то всё работает нормально. Если у кого-то есть идеи по этой проблеме, просьба поделиться решением.
P.S Первоначальные данные "прилетают" с сервера, то есть, каким цветом должен быть фон. По этой причине, фон и устанавливается тот, который был последним до перезапуска страницы.
Также, заметил то, что для $field атрибут isConnected, как я понимаю, это Node isConnected() до перезапуска страницы = true, после перезапуска он false, но только если смотреть через дебаггер. Если вызывать через document.getElementById('htmlId').isConnected, то он всегда возвращает true.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости