Вкладки Twitter Bootstrap: перейти к конкретной вкладке на странице «Перезагрузка» или «Гиперссылка» - PullRequest
332 голосов
/ 23 октября 2011

Я разрабатываю веб-страницу, на которой я использую Twitter Bootstrap Framework и их Bootstrap Tabs JS .Он отлично работает, за исключением нескольких мелких проблем, одна из которых заключается в том, что я не знаю, как перейти непосредственно к конкретной вкладке из внешней ссылки.Например:

<a href="facility.php#home">Home</a>
<a href="facility.php#notes">Notes</a>

должен переходить на вкладку "Главная" и на вкладку "Примечания" соответственно при переходе по ссылкам с внешней страницы

Ответы [ 24 ]

1 голос
/ 06 февраля 2013

У меня только что была эта проблема, но мне нужно было обработать несколько уровней табуляции.Код довольно уродливый (см. Комментарии), но делает свою работу: https://gist.github.com/JensRantil/4721860 Надеюсь, кто-то найдет его полезным (и не стесняйтесь предлагать лучшие решения!).

0 голосов
/ 07 мая 2019

Я знаю, что этот поток очень старый, но я оставлю здесь свою собственную реализацию:

$(function () {
  // some initialization code

  addTabBehavior()
})

// Initialize events and change tab on first page load.
function addTabBehavior() {
  $('.nav-tabs a').on('show.bs.tab', e => {
    window.location.hash = e.target.hash.replace('nav-', '')
  })

  $(window).on('popstate', e => {
    changeTab()
  })

  changeTab()
}

// Change the current tab and URL hash; if don't have any hash
// in URL, so activate the first tab and update the URL hash.
function changeTab() {
  const hash = getUrlHash()

  if (hash) {
    $(`.nav-tabs a[href="#nav-${hash}"]`).tab('show')
  } else {
    $('.nav-tabs a').first().tab('show')
  }
}

// Get the hash from URL. Ex: www.example.com/#tab1
function getUrlHash() {
  return window.location.hash.slice(1)
}

Обратите внимание, что я использую префикс класса nav- для ссылок навигации.

0 голосов
/ 07 сентября 2018

Если это кому-нибудь важно, следующий код небольшой и работает безупречно, чтобы получить единственное хеш-значение из URL-адреса и показать, что:

<script>
    window.onload = function () {
        let url = document.location.toString();
        let splitHash = url.split("#");
        document.getElementById(splitHash[1]).click();
    };
</script>

то, что он делает, это получает идентификатор и запускаетсобытие клика.Простой.

0 голосов
/ 05 марта 2018

Я делаю что-то вроде этого для ссылок с ajax #!# (например, / test.com #! # Test3), но вы можете изменить его как хотите

$(document).ready(function() {

       let hash = document.location.hash;
       let prefix = "!#";

       //change hash url on page reload
       if (hash) {
         $('.nav-tabs a[href=\"'+hash.replace(prefix,"")+'\"]').tab('show');
       } 

       // change hash url on switch tab
       $('.nav-tabs a').on('shown.bs.tab', function (e) {
          window.location.hash = e.target.hash.replace("#", "#" + prefix);
       });
 });

Пример с простой страницей на Github здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...