#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;
});