【问题标题】:Activate tab based on day of the week根据星期几激活选项卡
【发布时间】:2015-10-03 11:01:15
【问题描述】:

我已经在论坛中搜索了相关主题,但我遇到的解决方案不起作用。

我使用 Bootstrap 来显示一个带有两个选项卡的选项卡组。 我需要 Tab 1 从周一到周五自动激活,Tab #2 在周六到周日激活。

这是我的 HTML:

 <ul class="cat_filter nav nav-tabs right" role="tablist">
  <li role="presentation" class="active"><a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">Tab #1</a></li>
  <li role="presentation"><a href="#tab2" aria-controls="tab2" role="tab" data-toggle="tab">Tab #2</a></li>
  </ul>

<div class="tab-content">
  <div id="tab1" role="tabpanel" class="tab-pane fade in active woocommerce">Some content</div>     
  <div id="tab2" role="tabpanel" class="tab-pane fade woocommerce">Some content</div>    
</div>

我已经尝试了以下线程,但它们对我不起作用: Weekday jQuery UI Tabs open on current day load correct day of the week inside accordion gallery

【问题讨论】:

  • 请检查我的答案并提供反馈

标签: javascript jquery twitter-bootstrap tabs


【解决方案1】:

请尝试以下方法:

<?php if(date('l') == 'saturday' || date('l') == 'sunday'){ //l is smallcase L not number 1
  $day = 'tab2';   
  }else{
  $day = 'tab1';
}
?>
<ul class="cat_filter nav nav-tabs right" role="tablist">
  <li role="presentation" class="<?php if($day == 'tab1'){echo 'active';}?>"><a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">Tab #1</a></li>
  <li role="presentation" class="<?php if($day == 'tab2'){echo 'active';}?>"><a href="#tab2" aria-controls="tab2" role="tab" data-toggle="tab">Tab #2</a></li>
</ul>
<div class="tab-content">
  <div id="tab1" role="tabpanel" class="tab-pane fade in active woocommerce">Some content</div>     
  <div id="tab2" role="tabpanel" class="tab-pane fade woocommerce">Some content</div>    
</div>

【讨论】:

  • 感谢您的回答。我会测试它并回复你。我正在使用 WP 并且客户有一个共享主机帐户,所以我需要在安装中推送当天进行检查。
  • 很遗憾,您的解决方案不起作用。现在是星期六,所以 Tab #2 应该会自动激活,但什么也没发生。
  • 好的,我认为日期('l')必须根据 UTC 日期和时间返回日期,并且可能您在不同的时区,请相应调整或告诉我您的时区或小时与UTC的差异,我会帮助你
  • 很抱歉延迟回复。在 WP 安装中选择的时区是 UTC-4。
【解决方案2】:

这是javascript 和jquery 中的替代解决方案。我们首先确定日期索引,如果它是0(星期日)或6(星期六),则激活选项卡 1,否则激活选项卡 2。 See jsfiddle here

$(function(){
    var today =  new Date()
    var todayIdx = today.getDay();
    console.log('today:', todayIdx);

    if (todayIdx == 0 || todayIdx == 6) {
        $('a[aria-controls="tab1"]').closest('li').addClass('active');
        $('a[aria-controls="tab2"]').closest('li').removeClass('active');
    }
    else {
        $('a[aria-controls="tab2"]').closest('li').addClass('active');
        $('a[aria-controls="tab1"]').closest('li').removeClass('active');
    }
});

【讨论】:

  • 感谢您的回答。现在是星期六,您的解决方案有效并且实际上使 Tab#1 处于活动状态。我怎样才能消耗它,以便它实际单击选项卡并显示其内容?现在显示 Tab#1 处于活动状态,但您会看到 Tab#2 的内容
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 2020-01-03
  • 2016-10-22
  • 2021-04-19
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
相关资源
最近更新 更多