Ответ 1
У меня была такая же проблема (прыжок в верхнюю часть на клике по ссылке, которая запускала переключение коллапса)
href="#"
был изменен на href="javascript:void(0);"
, и он отлично работает (переключение без прокрутки вверх)
У меня неожиданная прокрутка страницы при попытке свернуть или развернуть элементы аккордеона. Может быть, я просто делаю что-то неправильно с сеткой бутстрапа? Вот пример страницы:
Как я могу избежать этого раздражающего эффекта?
Доступен jsfiddle https://jsfiddle.net/Lfwvtyms/1/
<body>
<!--default navbar here-->
<main>
<h1>Long long long long long long header header header header header header lng lasd lewq j</h1>
<div class="container">
<div class="row">
<div class="col-xs-12">
<div id="task-list">
<div id="accordion" role="tablist" aria-multiselectable="true" class="panel-group">
<div class="panel panel-default">
<div id="headingOne" role="tab" class="panel-heading"><h4 class="panel-title"><a
data-toggle="collapse" data-target="#collapseOne" href="#collapseOne"
aria-expanded="true" aria-controls="collapseOne">First list</a></h4></div>
<div id="collapseOne" role="tabpanel" aria-labelledby="headingOne"
class="panel-collapse collapse in">
<ul class="list-group">
<li class="list-group-item">Item1</li>
<li class="list-group-item">Item2</li>
<li class="list-group-item">Item3</li>
</ul>
</div>
</div>
<div class="panel panel-default">
<div id="headingTwo" role="tab" class="panel-heading"><h4 class="panel-title"><a
data-toggle="collapse" data-target="#collapseTwo" href="#collapseTwo"
aria-expanded="true" aria-controls="collapseTwo">Another list</a></h4></div>
<div id="collapseTwo" role="tabpanel" aria-labelledby="headingTwo"
class="panel-collapse collapse in">
<ul class="list-group">
<li class="list-group-item">Item1</li>
<li class="list-group-item">Item2</li>
<li class="list-group-item">Item3</li>
</ul>
</div>
</div>
</div>
</div>
<div id="someDiv">
<div class="row">
<div class="col-xs-12">
<div id="dummy">Div with fixed height here</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<footer class="container-fluid">my footer here</footer>
</body>
У меня была такая же проблема (прыжок в верхнюю часть на клике по ссылке, которая запускала переключение коллапса)
href="#"
был изменен на href="javascript:void(0);"
, и он отлично работает (переключение без прокрутки вверх)
Замените свойства href
на элементах a
на #
, а не, например, #collapseOne
вместо этого:
<a data-toggle="collapse" data-target="#collapseTwo" href="#collapseTwo"
aria-expanded="true" aria-controls="collapseTwo">
сделайте это
<a data-toggle="collapse" data-target="#collapseTwo" href="#"
aria-expanded="true" aria-controls="collapseTwo">
У меня была такая же проблема. Оказывается, проблема href вызывает проблему. Если вы не хотите, чтобы страница вообще прокручивалась, когда вы ругались/расширялись, что я хотел, просто удалите href. Оставляя это как #, все же сделал для экрана прокрутку вверх.
не работал у меня:
<a data-toggle="collapse" data-target="#collapseOne" href="#SectionOne"></a>
<a data-toggle="collapse" data-target="#collapseOne" href="#"></a>
работал:
<a data-toggle="collapse" data-target="#collapseOne"></a>
Смотрите мое обновление здесь: https://jsfiddle.net/Lfwvtyms/5/
У меня была такая же проблема, и я нашел свое решение с этим ответом на другом посту.
Ничего больше не работало, за исключением того, что этот маленький кусок Javascript добавлен в мой пользовательский .js файл. Он плавно возвращает фокус на выбранный заголовок панели. Единственное, что я изменил в соответствии с моим дизайном, - это расстояние до вершины, на линии 6.
fooobar.com/questions/251268/...
$('#accordion').on('shown.bs.collapse', function () {
var panel = $(this).find('.in');
$('html, body').animate({
scrollTop: panel.offset().top - 130
}, 500);
Вы можете переопределить обработчик кликов и использовать метод preventDefault()
для события click:
$('.aHandler').click( function(event) {
event.preventDefault();
...
});
Где "aHandler" - это класс в ваших тегах "a": <a class="aHandler" ...>...</a>
или любой другой допустимый jquery selector.