В целом, проблема такая. Есть 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.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости