Как мне затухать в div по идентификатору, если cookie = 1?

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть страница с несколькими вкладками. Я ищу способ, чтобы при выборе tab 5 и cookie = 1 отображалась tab6, в противном случае отображалась tab5.

Код для вкладок:

 jQuery(".tabs a").click(function () {
    stringref = jQuery(this).attr("href").split('#')[1];
    jQuery('.tab_content:not(#'   stringref   ')').hide();
    jQuery('.tab_content#'   stringref).fadeIn();
    return false;
});
  

Я хочу, чтобы вкладка с номером 5, если щелкнуть и cookie = 1, отображала tab6.
Код, который показывает div5 или Div6, если cookie равен 1 или null, является:

 alreadyClosed = $.cookie(stateCookieName);

if (alreadyClosed != 1) {
    $DIV5.show();
    $DIV6.hide();
} else {
    $DIV5.hide();
    $DIV6.show();
}
  

Как мне сложить их вместе? Я предполагаю, что это должен быть способ сказать:

 If tab1.click and cookie = 1 then show $div1
else tab1.click and cookie = null then show $div2
  

Тело выглядит как:

 <!-- buttons -->
<ul id="boxes" class="tabs">
<li><a href="#Div5">Div 5</a></li>
<li><a href="#Div6">Div 6</a></li>
</ul>

<!-- content -->
<div class="tab_content" id="Div5">DIV 5</div>
<div class="tab_content" id="Div6">DIV 6</div>
  

Я надеюсь, что вы, ребята, сможете мне помочь.
Большое спасибо и с уважением,
rallyboy.

Ответ №1:

 jQuery(".tabs a").click(function () {
    alreadyClosed = $.cookie(stateCookieName);

    stringref = jQuery(this).attr("href").split('#')[1];

    if(alreadyClosed == 1)
    {
        newstring = stringref;
        if(stringref == "5")
        {
            newstring = "6";
        }
        elseif(stringref == "6")
        {
            newstring = "5";
        }
        stringref = newstring;
    }

    jQuery('.tab_content:not(#'   stringref   ')').hide();
    jQuery('.tab_content#'   stringref).fadeIn();
    return false;
});
  

Этот дополнительный код выполняет быструю проверку — если cookie установлен, он переключает 5 на 6 или 6 на 5. Затем все продолжается в обычном режиме.

Вам нужно более общее решение, чем это, для вкладок 5 и 6? Если да, не могли бы вы, пожалуйста, изложить некоторые правила о том, как именно это должно работать?

Комментарии:

1. Фантастический ответ, сэр. Я работаю над решением этой проблемы уже 3 дня. Я потратил на это так много часов. В любом случае, когда для cookie установлено значение 1, он не показывает Tab6. Все, что я хочу, это, ЕСЛИ cookie = 1 и я нажимаю tab5, затем показать tab6, а если cookie = null и я нажимаю tab 5, он показывает tab5, как и сейчас.

2. На данный момент, если cookie нет, он работает отлично, но когда я устанавливаю cookie, это не так. Дайте мне знать, если хотите быстро просмотреть точную страницу. Я думаю, проблема в числах 5 и 6, которые вы написали в своем коде. Я пытался заменить на #Div5 и # Div6 или Div5 и Div6, но это не работает.

3. Я посмотрю на это завтра и разберусь с этим для вас. Я уверен, что это довольно близко. Ваша скрипка будет полезна.

4. Спасибо, сэр, что помогли мне. После стольких лет я наконец-то это выяснил. Я заменил эту функцию click на эту: var alreadyClosed = $.cookie(stateCookieName) == ‘1’; jQuery(‘ul.tabs a’).click(function() { var ref = jQuery(this).attr(‘href’).split(‘#’)[1]; if (alreadyClosed amp;amp; ref == ‘Div5’) { ref = ‘Div6’ ; } jQuery(‘div.tab_content:not(#’ ref ‘)’).скрыть(); jQuery(‘#’ ref).fadeIn(); возвращает false; });

Ответ №2:

 jQuery(".tabs a").click(function () {
    stringref = jQuery(this).attr("href").split('#')[1];

    // Normal navigation
    if(stringref != 'div5') {
        jQuery('.tab_content:not(#'   stringref   ')').hide();
        jQuery('.tab_content#'   stringref).fadeIn();
    } else {
        // 5 is special, do further checking
        var alreadyClosed = $.cookie(stateCookieName);

        if (alreadyClosed != 1) {
            $('div5').show();
            $('div6').hide();
        } else {
            $('div5').hide();
            $('div6').show();
        }           
    }

    return false;
});
  

Комментарии:

1. Спасибо за ваш ответ, сэр. Кажется, что независимо от того, есть у меня cookie или нет, он все равно показывает выбранную вкладку. Пожалуйста, упомяните, что каждая вкладка имеет класс tab_content . Я быстро подправил здесь: jsfiddle.net/Nsgcn о том, как это выглядит на самом деле. Еще раз большое спасибо

Ответ №3:

После стольких лет я наконец-то это выяснил. Я заменил эту функцию щелчка на эту:

 var alreadyClosed = $.cookie(stateCookieName) == '1';
jQuery('ul.tabs a').click(function () {
    var ref = jQuery(this).attr('href').split('#')[1];
    if (alreadyClosed amp;amp; ref == 'Div5') {
        ref = 'Div6';
    }
    jQuery('div.tab_content:not(#'   ref   ')').hide();
    jQuery('#'   ref).fadeIn();
    return false;
});