Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите с переходом к tabs через href (https://javascript.ru/forum/jquery/74573-pomogite-s-perekhodom-k-tabs-cherez-href.html)

NeonMan 22.07.2018 02:48

Помогите с переходом к tabs через href
 
Подскажите пожалуйста , есть страница с вкладками (tabs) на jquery, как через ссылку href перейти на нужную вкладку? вот сам код вкладок:
$('.menu li:first-child').addClass('active');
    $('.tab').hide();
    $('.tab:first').show();
    $('.menu li').click(function(){
    $('.menu li').removeClass('active');
    $(this).addClass('active');
    $('.tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();

рони 22.07.2018 10:39

NeonMan,
не плодите темы
jQuery(window).on('load', function() {
var hash = window.location.hash;
hash && jQuery("a[href='"+hash+"']").click()

})

NeonMan 22.07.2018 11:12

Цитата:

Сообщение от рони (Сообщение 490584)
NeonMan,
не плодите темы
jQuery(window).on('load', function() {
var hash = window.location.hash;
hash && jQuery("a[href='"+hash+"']").click()

})

Спасибо за ответ, но не совсем понятно куда вставлять какое значение, например у меня есть меню в хедере на странице index.html, там я прописываю такой тег(ссылку) <a href="about.html">О компании</a>, about.html - это страница с вкладками (tabs), у каждой вкладки свой id (#tab1, #tab2 и т.д.), по умолчанию открыта только первая вкладка, но как попасть сразу на вторую вкладку? она закрыта по умолчанию через display: none и открывается только по клику на нее, через выше указанный мной jquery код

рони 22.07.2018 11:22

Цитата:

Сообщение от NeonMan
<a href="about.html">О компании</a>,

Цитата:

Сообщение от NeonMan
var activeTab = $(this).find('a').attr('href');

по вашему коду ссылка должна быть с #
<a href="about.html#tab2">О компании</a>,
Цитата:

Сообщение от NeonMan
не совсем понятно куда вставлять

после кода владок добавить
строки 2 и 3

рони 22.07.2018 11:22

NeonMan,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

NeonMan 22.07.2018 11:36

Цитата:

Сообщение от рони (Сообщение 490590)
по вашему коду ссылка должна быть с #
<a href="about.html#tab2">О компании</a>,


к сожалению ничего не происходит с таким путем в href="about.html#tab2", потому как она(вкладка) закрыта по умолчанию через display: none; и открывается только по клику через код js (отредактировал)


после кода владок добавить
строки 2 и 3

о каких строках идет речь?

NeonMan 22.07.2018 12:31

Цитата:

Сообщение от рони (Сообщение 490590)
по вашему коду ссылка должна быть с #
<a href="about.html#tab2">О компании</a>,

после кода владок добавить
строки 2 и 3

Сделал вот так, но увы не переходит на нужную вкладку через href="about.html#tab2", может не там вставил эти две строчки?
$('.menu li:first-child').addClass('active');
    $('.tab').hide();
    $('.tab:first').show();
    $('.menu li').click(function(){
    $('.menu li').removeClass('active');
    $(this).addClass('active');
    $('.tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();

    var hash = window.location.hash;
    hash && jQuery("a[href='"+hash+"']").click()

рони 22.07.2018 14:36

NeonMan,
строку 10 где потеряли?
$(function() {
$('.menu li:first-child').addClass('active');
    $('.tab').hide();
    $('.tab:first').show();
    $('.menu li').click(function(){
    $('.menu li').removeClass('active');
    $(this).addClass('active');
    $('.tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();
    });
    var hash = window.location.hash;
    hash && $("a[href='"+hash+"']").click()
});

NeonMan 22.07.2018 15:23

Цитата:

Сообщение от рони (Сообщение 490606)
NeonMan,
строку 10 где потеряли?
$(function() {
$('.menu li:first-child').addClass('active');
    $('.tab').hide();
    $('.tab:first').show();
    $('.menu li').click(function(){
    $('.menu li').removeClass('active');
    $(this).addClass('active');
    $('.tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();
    });
    var hash = window.location.hash;
    hash && $("a[href='"+hash+"']").click()
});

При таком коде открывается через <a href="about.html#tab2"> сразу обе вкладки и слетает класс active и почему-то переносится на пукт меню со страницы index.html, если выставить#tab3 то открывается три вкладки. Может вы мне покажите рабочий пример с вкладками и переход на каждую из другой страницы, а я постараюсь переписать поведение тогда под рабочий пример.

рони 22.07.2018 15:33

NeonMan,
может так?
$(function() {
    $('.menu li').click(function(){
    $('.menu li').removeClass('active');
    $(this).addClass('active');
    $('.tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();
    });
    var hash = window.location.hash;
    hash ?  $("a[href='"+hash+"']").click()  : $('.menu li:first').click()
});


Часовой пояс GMT +3, время: 03:25.