Вы просто скрывали / отображали неправильный элемент HTML.Изменение селектора только на элемент address
устраняет проблему.Но, если пойти немного дальше, если вы инициализируете текстовое поле и его метку так, чтобы они были скрыты в начале, тогда вам вообще не нужен оператор if/else
.Вы можете просто переключать адрес и текстовое поле, когда флажок установлен.
$('#address-checked').on("change", function(){
// You don't need and if/then here. Just toggle the visibility
$('address').toggle('slow');
$('.hidden').toggle('slow');
});
.hidden { display:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="address-checked" checked="checked" class="mb-3">
<label class="car-list-step-equipment-label">Use profile address</label>
<address>
9 Longacre Road<br>
London, GB, E17 4DT
</address>
<div id="address-sh" class="hidden">
<label>Enter new address: <input type="text"></label>
</div>
Кроме того, JQuery больше не рекомендует использовать методы событий быстрого доступа, такие как change
.Вместо этого рекомендуется использовать метод on()
, чтобы вы передавали имя события.
И наконец (к вашему сведению), не прерывайте свои HTML-теги самостоятельно.Это оставшийся синтаксис со времен XHTML и сегодня действительно бесполезен.Фактически, использование этого синтаксиса может привести к появлению ошибок в вашем коде. Прочитайте это для деталей.