Есть скрипт, который по кнопке открывает форму и скроллит на неё. Есть ещё две другие кнопки и две другие формы. Работают аналогично.
<style>
/*Скрываем блок по ID*/
#rec126129438 {
display:none;
}
</style>
<script>
$('[href = "#form1"]').click(function() {
$('#rec126129438').slideToggle("slow", function() {
if ($(this).is(":visible")) {
$(document).animate({
scrollTop: $(this).offset().top
}, "slow")
}
});
});
</script>
Что бы туда добавить, чтобы нажатие одной кнопки не только открывало соответствующую форму, но и скрывало остальные формы? Неважно, открыты они или нет. Т.е. всегда должно отображаться либо 0 форм (начальный вариант), либо одна.
Скрыть можно с помощью перебора элементов по части имени id. В примере ниже используется 'rec':
$('*[id*=rec]:visible').hide();
Разместить код необходимо сразу после вызова обработки клика:
$('[href = "#form1"]').click(function() {
$('*[id*=rec]:visible').hide();
Но лучше будет создать для форм какой-то идентификатор отличный от id, например data-type="form" и скрывать по нему. Чтобы не скрыть элементы отличные от форм.
$('div[data-type=form]').hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="rec12654684" data-type="form">form1</div>
<div id="rec12654685" data-type="form">form2</div>
<div id="rec12654686" data-type="form">form3</div>
Спасибо. Почти работает. Вот код:
$('[href = "#form1"]').click(function() {
$('*[id*=rec126129438]:visible').hide();
$('*[id*=rec126130996]:visible').hide();
аналогично на других кнопках. на второй - формы 1 и 3, на третьей - 1 и 2.
Работает следующим образом: нажал на первую кнопку - открылась первая форма, потом нажал на вторую кнопку - первая форма скрылась, открылась вторая. Всё ок. Но если нажать потом на первую кнопку опять, то первая форма не открывается. Явно что-то ещё добавить надо, но что..
Вот, что получилось. Вот стили:
<style>
#rec126130993 {
display: none;
}
#rec126129438 {
display: none;
}
#rec126130996 {
display: none;
}
</style>
И сам скрипт:
<script>
setTimeout(function () {
$('a[href="#form1"], a[href="#form2"], a[href="#form3"]').off().on('click', function() {
var id = $(this).attr('href').substr(1);
var anchor = $('a[name="' + id + '"]');
var el = anchor.parent().next();
var form_ids = ['rec126130993', 'rec126129438', 'rec126130996'];
for (var i = 0; i < form_ids.length; i++) {
if (el.attr('id') != form_ids[i]) {
$('#' + form_ids[i]).hide();
}
}
$('a[href="#form1"], a[href="#form2"], a[href="#form3"]').html('Выбрать');
if (el.is(":visible")) {
el.hide();
$(this).html('Выбрать');
} else {
el.show();
$(this).html('Скрыть');
$('html, body').animate({scrollTop: anchor.offset().top}, 1000);
}
return false;
});
}, 2000);
</script>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возможно ли сделать админку на JavaScript? Есть HTML и CSSПК без интернета, то есть PHP отпадает — нужно сделать, чтобы была возможность менять характеристики...
Хотелось бы узнать, есть ли способ удалить обработчик события с анонимной функцией на нативном JSПример кода:
1 Необходимо преобразовать значение даты и времени (переменная itemTimeString) в милисекунды от 1970