Jump to content
  • 0

Активность меню и выбор меню


Mary_RND
 Share

Question

Есть 4 таб меню, надо было, чтобы меню всегда было раскрыто, но вот теперь возникла проблема.

Сейчас у меня подключена активность на меню, т.е. где находишься та вкладка и меняется, сейчас получается из-за изначальной задачи, у меня теперь активно два пункта >.<....

Если я убираю :first, то получаются активными все страницы.

$( document ).ready( function () {
  $( '.menu_dop .tab-content:first' ).show( 0 );
  $( '.menu_dop .tab:first' ).addClass( 'selected' );
  $( '.menu_dop .tab' ).click( function () {
    $( '.menu_dop .tab' ).removeClass( 'selected' );
    $( this ).addClass( 'selected' );
    $( '.menu_dop .tab-content' ).hide( 0 );
    $( this ).find( '.tab-content' ).show( 0 );
  } );

 

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0
1 час назад, Switch74 сказал:

открываете таб сначала по активности
после проверяете есть ли открытый таб
если открытых табов нет, открываете первый

А можно написать кодом пожалуйста ^_^"

Link to comment
Share on other sites

  • 0
14 часа назад, Switch74 сказал:

я к сожалению не знаю, какой код у вас отвечает за выбор активного таба

Вот этот способ брала для моего случая: http://jsfiddle.net/UWYxZ/

Просто как добавить сюда проверку на active я не знаю... :(

Edited by Mary_RND
Забыла дописать сообщение
Link to comment
Share on other sites

  • 0
В 21.03.2016в15:46, Mary_RND сказал:

Есть 4 таб меню, надо было, чтобы меню всегда было раскрыто, но вот теперь возникла проблема.

Сейчас у меня подключена активность на меню, т.е. где находишься та вкладка и меняется, сейчас получается из-за изначальной задачи, у меня теперь активно два пункта >.<....

Вот и хотелось увидел, что у вас за код, который открывает нужную вкладку.

То что вы скинули больше похоже на открытие первой вкладки.

 

Link to comment
Share on other sites

  • 0

Изначально задача была на то, чтобы вкладка первая была всегда открыта, скажем она является основной. По сути если не находишься в разделах данного меню, первая вкладка и должна остаться активной.

Но после того как сделала меню в cms и появился status active, у меня подсвечивается две вкладки, ведь когда переходишь в какой-то раздел этого меню, происходит обновление и selected, который добавляется к выбранным tab, сбрасывается на первый ((

Я первый раз работаю с cms на уровне натянуть верстку. Поэтому и сталкиваюсь вот с такими проблемами (((

я правильно поняла, что надо было рассказать? Если решите, что нужно по другому переписать js, я не обижусь, даже круче будет, буду разбирать код по полочкам смотря в теорию, научусь чему-нибудь еще как говорится.

Edited by Mary_RND
дописала информацию и исправила грамматику
Link to comment
Share on other sites

  • 0
$(document).ready(function(){
  if(!$('.tabs .tab').hasClass('active')){
    $('.tab-content:first').show(0);
    $('.tab:first>span').addClass('selected');
    $('.tab>span').click(function(){
       $('.tab>span').removeClass('selected');
       $(this).addClass('selected');
       $('.tab-content').hide(0);
       $(this).next('.tab-content').show(0);
    });
  }
});

попробуйте так

Link to comment
Share on other sites

  • 0
$(document).ready(function(){
  var active = 0;
  $('.tabs .tab').each(function(n,elem){
    if($(elem).hasClass('active')){
      $(elem).find('.tab-content').show(0);
      active = n+1;
    }
  });
  if(active)
  {
    $('.tab-content:first').show(0);
    $('.tab:first>span').addClass('selected');
  }
  $('.tab>span').click(function(){
    $('.tab>span').removeClass('selected active');
    $(this).addClass('selected');
    $('.tab-content').hide(0);
    $(this).next('.tab-content').show(0);
  });
});

поправил

Link to comment
Share on other sites

  • 0

Почему-то не могла минут 30 обновить тему, но с вашей подачи, стало кое-что понятно и сделала так.

$(document).ready(function(){
    if(!$('.menu_dop .tab.active').length){
        $( '.menu_dop .tab-content:first' ).show( 0 );
        $( '.menu_dop .tab:first' ).addClass( 'selected' );
    } else {
        $( '.menu_dop .tab.active .tab-content' ).show( 0 );
    }
        $( '.menu_dop .tab' ).click( function () {
        $( '.menu_dop .tab' ).removeClass( 'selected' );
        $( this ).addClass( 'selected' );
        $( '.menu_dop .tab-content' ).hide( 0 );
        $( this ).find( '.tab-content' ).show( 0 );
    })
});

P.S.: работает второй код, но вот условие, что находясь в другом месте, а не в направлениях меню всегда должно быть раскрыто, не выполняет.

Довольно заковыристое меню вышло по условиям ^_^"

 

Спасибо большое за помощь ^____^

Edited by Mary_RND
дописала информацию
Link to comment
Share on other sites

  • 0
3 минуты назад, Switch74 сказал:

Скопируйте еще раз из этого поста код

 

Скопировала.

Получается если находишься на главной, то меню скрыто. Открывается только при клике. При то не происходит выделения.

Если находишься на внутренних страницах, то если не внутри опять же, меню скрыто до клика.

Если находишься внутри какого пункта меню, то выделяется все как надо. но опять же не меняется другие вкладки, когда ходишь по ним.

Проблема в том, что если не находишься в разделах меню, то меню тот же например первый пункт, всегда должен быть виден ><..

Вообще довольно тяжелое меню... (

 

Link to comment
Share on other sites

  • 0

достал из вашего файла script.js

$(document).ready(function(){
    if(!$('.menu_dop .tab.active').length){
        $( '.menu_dop .tab-content:first' ).show( 0 );
        $( '.menu_dop .tab:first' ).addClass( 'selected' );
    } else {
        $( '.menu_dop .tab.active .tab-content' ).show( 0 );
    }
        $( '.menu_dop .tab' ).click( function () {
        $( '.menu_dop .tab' ).removeClass( 'selected' );
        $( this ).addClass( 'selected' );
        $( '.menu_dop .tab-content' ).hide( 0 );
        $( this ).find( '.tab-content' ).show( 0 );
    })
});

вроде не очень похоже на 

$(document).ready(function(){
  var active = 0;
  $('.tabs .tab').each(function(n,elem){
    if($(elem).hasClass('active')){
      $(elem).find('.tab-content').show(0);
      active = n+1;
    }
  });
  if(active)
  {
    $('.tab-content:first').show(0);
    $('.tab:first>span').addClass('selected');
  }
  $('.tab>span').click(function(){
    $('.tab>span').removeClass('selected active');
    $(this).addClass('selected');
    $('.tab-content').hide(0);
    $(this).next('.tab-content').show(0);
  });
});

 

Link to comment
Share on other sites

  • 0

Так я же говорила, что до конца не работал почему-то, вот и оставила, тот, что по вашему направлению, дописала. Поняла просто, что можно было сделать.

Хотя хочу попробовать поставить ваш, только вечером, дома. Интересно его разобрать в работе =) А то на сайт в любой момент могут посмотреть -_-"

 

 

Link to comment
Share on other sites

  • 0
$(document).ready(function(){
  if($('.tabs .tab.active').length == 0)
  {
    $('.tab:first').addClass('selected');
    $('.tab:first>span').addClass('selected');
    $('.tab:first>tab-content').show(0);
  }
  $('.tab').click(function(){
    $('.tab').removeClass('selected active');
    $('.tab>span').removeClass('selected active');
    $('.tab>.tab-content').hide(0);
    $(this).addClass('selected');
    $(this).children('span').addClass('selected');
    $(this).children('.tab-content').show(0);
  });
});

Можно вот так сделать? Не понятно почему вы работали с .tab>span, а не .tab

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy