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 16:21

Цитата:

Сообщение от рони (Сообщение 490614)
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()
});

Да, этот вариант рабочий, спасибо, но единственное что, переходит экран сразу к началу блока с #tab2 например и тогда не видны вкладки (они вынесены абсолютным позиционированием чуть выше), что становится очень не удобным для дальнейшей навигации по кладкам, есть ли какая-то команда, что бы экран всегда был в начале страницы при переходе через ссылку на вкладку или по нажатию на вкладку? И ранее у меня после строчки $(activeTab).show(); шла еще такая строчка для слайдера $('.about-slider').slick('setPosition'); теперь она не срабатывает, может ее куда-то в др место перенести?

рони 22.07.2018 16:42

NeonMan,
не понимаю что вы пишите, всё что мог смотрите выше.

NeonMan 22.07.2018 17:55

Цитата:

Сообщение от рони (Сообщение 490620)
NeonMan,
не понимаю что вы пишите, всё что мог смотрите выше.

Все отлично работает, просто надо было добавить return false; что бы не прыгало при переходе :
$(function() {
    $('.about-menu li').click(function(){
    $('.about-menu li').removeClass('active');
    $(this).addClass('active');
    $('.about-tab').hide();
    var activeTab = $(this).find('a').attr('href');
    $(activeTab).show();
    $('.about-slider').slick('setPosition');
    return false;
    }); 

    var hash = window.location.hash;
    hash ?  $("a[href='"+hash+"']").click()  : $('.about-menu li:first').click()
});


Но последний момент, который остался, это вот эта вот строчка:
$('.about-slider').slick('setPosition');

Она нужна для корректного отображения слайдера при переходе на вкладку, в старой конструкции кода эта строчка была после 7 строчки $(activeTab).show();
но в данной конструкции не срабатывает, подскажите пожалуйста как ее вставить теперь.

рони 22.07.2018 18:51

NeonMan,
возможно строки 1 и 14 лишние, или слайдер ещё не инициализирован, тогда код 2 - 13 добавить после инициализации слайдера.


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