У меня есть несколько простых флажков, каждый из которых преобразуется в пользовательский интерфейс jQuery checkboxradio
:
$( document ).ready(function() {
$( "#my-form" ).find( "input[type=checkbox]" ).checkboxradio();
}
Я могу установить и снять их, и они работают как положено.
Однако,когда я перехожу на другую страницу, затем возвращаюсь на страницу с включенными виджетами checkboxradio
, нажимая кнопку возврата браузера, все они отображают неправильный значок и не изменяются при выборе:
Глядя на веб-инспектор, фоновая позиция значка переопределяется с помощью пользовательского интерфейса jQuery CSS:
.ui-state-hover, .ui-widget-content .ui-state-hover {
background-position-x: initial;
background-position-y: initial;
}
Правильная фоновая позиция, которая перечеркнута, должно быть (если отмечено):
.ui-icon-check {
background-position: -64px -144px;
background-position-x: -64px;
background-position-y: -144px;
}
Это пример label
, единственная разница до / после обратной навигации в том, что ui-state-hover
устанавливается на первый span
, когда я возвращаюсь кстраница, которая приводит к неправильному значку:
<label for="B21-2" class="ui-checkboxradio-label ui-corner-all ui-button ui-widget ui-checkboxradio-checked ui-state-active">
<span class="ui-checkboxradio-icon ui-corner-all ui-icon ui-icon-background ui-icon-check ui-state-checked ui-state-hover"></span>
<span class="ui-checkboxradio-icon-space"> </span>
14 Jan 2020 - 24 Mar 2020
</label>
Как я могу предотвратить искажение класса при наведении на значок формы?Я пытался уничтожить и воссоздать виджеты безрезультатно.
Редактировать:
Я сузил проблему, возникающую в Chrome (не Safari) и когдаcheckboxradio
виджеты находятся в пользовательском интерфейсе jQuery dialog
.
Я могу воспроизвести его в Chrome со следующим минимальным кодом:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Page 1</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" type="text/css">
<script>
$( document ).ready(function() {
$( "#my-dialog" ).find( "input[type=checkbox]" ).checkboxradio();
$( "#my-dialog" ).dialog();
});
</script>
</head>
<body>
<div id="my-dialog">
<label for="test">Test</label>
<input type="checkbox" id="test" value="test">
<a href="page-2.html">Next</a>
</div>
</body>
</html>
Где page-2.html
- это любая старая страница, которая,при загрузке вы переходите обратно к page-1.html
с помощью кнопки возврата браузера:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Page 2</title>
</head>
<body>
<p>Now navigate back.</p>
</body>
</html>