Как сделать ссылку на табуляцию bootstrap?

Нужно, чтобы при заходе на ссылку якоря открывалась соответствующая вкладка табуляции.
В принципе, вкладка открывается (и при переключении модифицируется адрес ссылки в браузере), но, не могу избавиться от прокрутки окна до якоря при заходе через адресную строку браузера.
Не срабатывает скролл наверх. Что я делаю не так?

$('.nav-tabs a').on('shown.bs.tab', function (e) {
		var sm = $('body').scrollTop();
		if (history.pushState) {
			history.pushState(null, null, e.target.hash);
		} else {
			window.location.hash = e.target.hash;
		}
		alert(sm);
		$('html,body').scrollTop(sm);
	});
	var url = document.location.toString();
	if (url.match('#')) {
		$('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
	};


<div>
	<ul class="nav nav-tabs" role="tablist">
		<li class="active" role="presentation">
			<a href="#tab_edu_bach" role="tab" data-toggle="tab">Бакалавриат</a>
		</li>
		<li role="presentation">
			<a href="#tab_edu_spec" role="tab" data-toggle="tab">Специалитет</a>
		</li>
		<li role="presentation">
			<a href="#tab_edu_mag" role="tab" data-toggle="tab">Магистратура</a>
		</li>
		<li role="presentation">
			<a href="#tab_edu_aspir" role="tab" data-toggle="tab">Аспирантура</a>
		</li>
	</ul>
	<div class="tab-content">
		<div id="tab_edu_bach" class="tab-pane active" role="tabpanel">
			Бакалавриат текст
		</div>
		<div id="tab_edu_spec" class="tab-pane" role="tabpanel">
			Специалитет текст
		</div>
		<div id="tab_edu_mag" class="tab-pane" role="tabpanel">
			Магистратура текст
		</div>
		<div id="tab_edu_aspir" class="tab-pane" role="tabpanel">
			Аспирантура текст
		</div>
	</div>
</div>
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ответы на вопрос 1
iNickolay
@iNickolay
У вас этот код вообще работает? :)
- У оброботчика .on() не указан тип события;
- Что за 'shown.bs.tab',? Может, всё таки shown это класс: '.shown.bs.tab'?)

Попробуйте так:
$('.nav-tabs a').on('click', '.shown.bs.tab', function (e) {

    e.preventDefault(); // Отключаем действие по умолчанию.

    var sm = $('body').scrollTop();
    if (history.pushState) {
      history.pushState(null, null, e.target.hash);
    } else {
      window.location.hash = e.target.hash;
    }
    alert(sm);
    $('html,body').scrollTop(sm);
  });
  var url = document.location.toString();
  if (url.match('#')) {
    $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
  };
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы