Я занимаюсь разработкой веб-страницы, на которой я использую Twitter Bootstrap Framework и их вкладки Bootstrap JS . Он отлично работает, за исключением нескольких мелких проблем, одна из которых заключается в том, что я не знаю, как перейти непосредственно к конкретной вкладке из внешней ссылки. Например:
<a href="facility.php#home">Home</a>
<a href="facility.php#notes">Notes</a>
должны перейти на вкладку «Главная» и «Примечания» соответственно при нажатии на ссылки с внешней страницы
javascript
html
tabs
twitter-bootstrap
mraliks
источник
источник
Ответы:
Вот мое решение проблемы, возможно, немного поздно. Но это может помочь другим:
источник
window.scrollTo(0, 0);
чтобы окно всегда прокручивалось вверхSyntax error, unrecognized expression: .nav-tabs a[href=#tab-2]
. Решено с помощью stackoverflow.com/questions/12131273/…ОБНОВИТЬ
Для Bootstrap 3 измените
.on('shown', ...)
на.on('shown.bs.tab', ....)
Это основано на ответе @dubbe и принятом ТАКом ответе . Это решает проблему с
window.scrollTo(0,0)
не работает правильно. Проблема в том, что когда вы заменяете хеш URL на показанной вкладке, браузер прокручивает этот хеш, так как это элемент на странице. Чтобы обойти это, добавьте префикс, чтобы хеш не ссылался на фактический элемент страницыПример использования
Если у вас есть панель вкладок с id = "mytab", вам нужно разместить ссылку так:
источник
$('.nav-tabs a[href="'+hash.replace(prefix,"")+'"]').tab('show');
Вы можете вызвать
click
событие на соответствующей ссылке вкладки:источник
Это улучшенная реализация решения dubbe, которое предотвращает прокрутку.
источник
Хотя предоставленное решение JavaScript может работать, я пошел несколько другим путем, который не требует дополнительного JavaScript, но требует логики в вашем представлении. Вы создаете ссылку со стандартным параметром URL, например:
Затем вы просто определяете значение activeTab для записи 'class = "active"' в соответствующий
<li>
Псевдокод (реализуйте соответственно на вашем языке). Примечание. Я установил вкладку «Домой» в качестве активной по умолчанию, если в этом примере параметры не указаны.
источник
Я не большой поклонник если ... еще; поэтому я выбрал более простой подход.
Не обращается к прокрутке до запрошенного хэша; но должно ли это?
источник
Для Bootstrap 3:
https://jsfiddle.net/DTcHh/6638/
источник
Это работает в Bootstrap 3 и улучшает 2 лучших ответа dubbe и flynfish, интегрируя также ответ GarciaWebDev (который учитывает параметры URL после хеша и является прямым от авторов Bootstrap на трекере проблем github):
источник
'shown'
должно быть в'shown.bs.tab'
соответствии с документацией: getbootstrap.com/javascript/#tabs-events . Я озадачен тем, почему, но когда я попытался отредактировать ваше сообщение, оно было отклонено ...Этот код выбирает правую вкладку в зависимости от #hash и добавляет правильный #hash при нажатии на вкладку. (это использует jquery)
В Coffeescript:
или в JS:
источник
Опираясь на решение Демиркана Челеби; Я хотел, чтобы вкладка открывалась при изменении URL-адреса и открывала вкладку без перезагрузки страницы с сервера.
источник
Этот код с http://github.com/twitter/bootstrap/issues/2415#issuecomment-4450768 работал для меня отлично.
источник
Решение @flynfish + @Ztyx, которое я использую для вложенных вкладок:
у детей должен быть класс = "вложенный"
источник
Я придумал решение, которое использует хэш url или localStorage, в зависимости от доступности последнего, с кодом ниже:
источник
Я бы посоветовал вам использовать код, предоставленный авторами Bootstrap для отслеживания их проблем на GitHub :
Вы можете найти в ссылке на проблему больше информации о том, почему они не решили поддержать это.
источник
Попробовал несколько способов, описанных выше, и в итоге получил следующее рабочее решение, просто попробуйте скопировать и вставить в ваш редактор. Для проверки просто измените хэш на входящие, исходящие, составьте в URL и нажмите клавишу ввода.
Надеюсь, это сэкономит ваше время.
источник
Вот что я сделал, очень просто, и, если у ваших ссылок на вкладках есть ID, связанный с ними, вы можете получить атрибут href и передать его функции, которая показывает содержимое вкладки:
Затем в вашем URL вы можете добавить хеш в виде чего-то вроде: # tab_tab1, часть 'tab_' удаляется из самого хэша, поэтому после этого помещается идентификатор фактической ссылки вкладки в навигационных вкладках (tabid1), поэтому URL будет выглядеть примерно так: www.mydomain.com/index.php#tab_tabid1.
Это прекрасно работает для меня и надеюсь, что это поможет кому-то еще :-)
источник
Это мое решение для обработки вложенных вкладок. Я просто добавил функцию, чтобы проверить, есть ли на активной вкладке родительская вкладка для активации. Это функция:
И можно назвать так (на основе решения @ flynfish):
Это решение работает довольно хорошо для меня на данный момент. Надеюсь, что это может быть полезно для кого-то еще;)
источник
Мне пришлось изменить некоторые биты, чтобы это работало на меня. Я использую Bootstrap 3 и JQuery 2
источник
Просто вставьте этот код на свою страницу:
источник
У меня просто была эта проблема, но мне нужно было обрабатывать несколько уровней вкладок. Код довольно уродливый (см. Комментарии), но делает свою работу: https://gist.github.com/JensRantil/4721860 Надеюсь, кто-то найдет его полезным (и не стесняйтесь предлагать лучшие решения!).
источник
Комбинируя peices из других ответов, вот решение, которое может открыть много уровней вложенных вкладок:
источник
$('.nav-tabs li a').click( function(e) { history.pushState( null, null, $(this).attr('href') );});
в javascript над вашим кодом.Если это кому-нибудь важно, следующий код небольшой и работает безупречно, чтобы получить единственное значение хеша из URL и показать, что:
он извлекает идентификатор и запускает событие click. Просто.
источник
Я делаю что-то вроде этого для ссылок с ajax
#!#
(например, / test.com #! # Test3), но вы можете изменить его так, как вам нравится.Пример с простой страницей на Github здесь
источник
Я знаю, что этот поток очень старый, но я оставлю здесь свою собственную реализацию:
Обратите внимание, что я использую
nav-
префикс класса для навигации по ссылкам.источник