【问题标题】:How to use js/css to make tab content viewable如何使用 js/css 使标签内容可见
【发布时间】:2018-07-23 06:44:09
【问题描述】:

我正在处理标签

有 5 个标签

关于我们 我们的工作 我们的团队 新闻与事件 联系我们

每个里面都有内容和链接、图片。

每当我点击选项卡内的链接时,我想要在这里实现的目标我们的团队内容

它应该会打开联系我们标签内容

这是我目前使用的代码,它使用了一些自定义 js 和 jquery 2.2.0。

请检查代码,我这里没有放 css。

这个例子的直播链接是Live Demo

请帮帮我

// TABS
    var tabs = $('.container_tabs');
    $('.tabs-content > div', tabs).each(function (i) {
        if (i != 0) $(this).hide(0);
    });
    tabs.on('click', '.tabs a', function (e) {

        e.preventDefault();

        var tabId = $(this).attr('href');


        $('.tabs a', tabs).removeClass();
        $(this).addClass('active');

        $('.tabs-content > div', tabs).hide(0);
        $(tabId).show();

    });

    // var tabs1 = $('.container_tabs1');
    // $('.tabs-content > div', tabs1).each(function (i) {
    //     if (i != 0) $(this).hide(0);
    // });
    // tabs1.on('click', '.tabs a', function (e) {
    //
    //     e.preventDefault();
    //
    //     var tabId = $(this).attr('href');
    //
    //
    //     $('.tabs a', tabs1).removeClass();
    //     $(this).addClass('active');
    //
    //     $('.tabs-content > div', tabs1).hide(0);
    //     $(tabId).show();
    //
    // });

    (function ($) {
        jQuery.fn.lightTabs = function (options) {

            var createTabs = function () {
                tabs = this;
                i = 0;

                showPage = function (tabs, i) {
                    $(tabs).children("div").children("div").hide();
                    $(tabs).children("div").children("div").eq(i).show();
                    $(tabs).children("ul").children("li").removeClass("active");
                    $(tabs).children("ul").children("li").eq(i).addClass("active");
                };

                showPage(tabs, 0);

                $(tabs).children("ul").children("li").each(function (index, element) {
                    $(element).attr("data-page", i);
                    i++;
                });

                $(tabs).children("ul").children("li").click(function () {
                    showPage($(this).parent().parent(), parseInt($(this).attr("data-page")));
                });
            };
            return this.each(createTabs);
        };
    })(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="tabs cw-wrapper">
            <ul class="cw-30">
               
               <li class="" data-page="0">About Us</li>
               
               <li data-page="1">Our Work</li>
               
               <li data-page="2">Our Team</li>
               
               <li data-page="3">Our Partners</li>
                              
               <li data-page="4" class="active">Work With Us</li>
                              
               <li data-page="5">Contact us</li>
            </ul>
            <div class="cw-70">
               <div class="content" style="display: none;">   
                  Content 1
               </div>
               <div class="content" style="display: none;">
                  Content 2 
               </div>
               <div class="content" style="display: none;">
                  Content 3
               </div>
               <div class="content" style="display: none;">
                  Content 4
               </div>
               <div class="content" style="display: none;">
                  <h3>Contact us Content</h3>
               </div>
            </div>
         </div>

【问题讨论】:

  • 所以,基本上,如果我理解你的问题,你只想使用 jquery 打开一个 div,并隐藏所有其他 div?
  • 快速查看您的 tabs.on('click', 并没有显示任何问题 - 不知道为什么您需要所有看起来非常脆弱的复杂代码 lighttabs 代码。跨度>
  • 您能否描述一下您遇到的确切 问题以及您认为您的代码不起作用的原因?到目前为止,您只是说“我正在尝试 A,这是我的代码”。
  • @freedomn-m 检查下面的答案,答案就在那里,但我想要它没有内联点击 javascript。请指导我

标签: javascript jquery html css


【解决方案1】:

如果我理解正确,您也希望能够通过选项卡内容内的链接切换选项卡。在这种情况下,您应该创建一个用于切换选项卡的功能,而不是菜单中的单击事件。这是一个例子:

编辑#1: 我删除了所有 onclicks 并将 switchTab 函数绑定到所有具有 switch-tab 类的元素。

编辑#2: 根据要求,您可以从 url ?tab=x codepen 传递初始标签号

// set tab from url
// sample url: http://mywebsite.com/my-route?tab=2
$(document).ready(function() {
  var url = new URL(window.location.href);
  var tabNumber = url.searchParams.get('tab');
  if (tabNumber)
    switchTab(tabNumber);
});

// change tab by clicking an element with "switch-tab" class
$('.switch-tab').on('click', function(e) {
  var tabNumber = e.target.getAttribute('data-tab');
  switchTab(tabNumber);
});

// change tab by passing tab number 
function switchTab(tabNumber) {
  $('#tabs li').removeClass('active');
  $('#tabs li[data-tab=' + tabNumber + ']').addClass('active');
  
  $('.content').css('display', 'none');
  $('.content[data-content=' + tabNumber + ']').css('display', 'block');
}
<style>
  #tabs li.active {
    font-weight: bold;
  }
  .content {
    display: none;
  }
  .content.visible {
    display: block;
  }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="tabs cw-wrapper">
  <ul class="cw-30" id="tabs">
    <li data-tab="0" class="switch-tab">About Us</li>
    <li data-tab="1" class="switch-tab">Our Work</li>
    <li data-tab="2" class="switch-tab">Our Team</li>
    <li data-tab="3" class="switch-tab">Our Partners</li>
    <li data-tab="4" class="switch-tab active">Work With Us</li>
    <li data-tab="5" class="switch-tab">Contact us</li>
  </ul>
  <div class="cw-70">
    <div class="content" data-content="1">   
      <p>Content 1</p>
    </div>
    <div class="content" data-content="2">
      <p>Content 2</p>
    </div>
    <div class="content" data-content="3">
      <p>Content 3</p>
    </div>
    <div class="content visible" data-content="4">
      <p>Content 4</p>
      <a href="#" data-tab="5" class="switch-tab">go to contact us</a>
    </div>
    <div class="content" data-content="5">
      <h3>Contact us Content</h3>
    </div>
  </div>
</div>

【讨论】:

  • 你能从列表中删除内联 js 并让它这样工作吗?
  • $("[data-content a").click(function() { switchTab($(this).closest("[data-content]").data("content")); })$("ul.tabs&gt;li").click(function() { switchTab($(this).data("tab")) });
  • @freedomn-m 谢谢,如果您能与他的代码分享您的编辑,那就太好了。是的,他做得很好,我只想让它在没有任何内联 js 的情况下与外部 js 一起工作。请帮帮我。
  • @Hadi290 非常感谢,对于您使用不同样式的标签内容,能否请您让它在我上面的代码上工作。例如,在我的代码选项卡内容 div 中包含 style="display: none;" ,你能让它在那里工作吗?或者它会在那里自动工作?
  • @NimeshDeo 将我的两个 css .content { display: none; }.content.visible { display: block; } 添加到您的 css 文件中,并从您的 html 中删除内联 style="display: none;"。它应该可以正常工作。
猜你喜欢
  • 2021-07-17
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多