У меня есть некоторый тривиальный JavaScript для осуществления изменения стиля:
sel = document.getElementById('my_id');
sel.className = sel.className.replace(/item-[1-9]-selected/,'item-1-selected');
return false;
Это хорошо работает с последними версиями FF, Opera и IE, но перестало работать на последних версиях Chrome и Safari.
Это влияет на двух потомков, которые, оказывается, одноуровневые элементы. Первые одноуровневые обновления, но второе не делает. Дочерний элемент второго элемента также фокусируется и содержит <a> тег, который содержит вышеупомянутый код в атрибуте onclick.
В окне “Developer Tools” Chrome, если я пошагово перемещаю (например, снятие флажка и проверка) какой-либо атрибут какого-либо элемента, вторых одноуровневых обновлений корректного стиля.
Существует ли обходное решение к легко, и программно “пошагово переместите” WebKit в выполнение правильной вещи?
Я нашел несколько сложных предложений и много простых, которые не сработали, но есть комментарий к один из них Васил Динков предоставил простое решение для принудительной перерисовки / перерисовки, которое отлично работает:
sel.style.display='none';
sel.offsetHeight; // no need to store this anywhere, the reference is enough
sel.style.display='';
Я позволю кому-нибудь другому прокомментировать, работает ли это для стилей, отличных от «block».
Спасибо, Василь!