jQuery 和 TailwindCss 上的选项卡

Posted

技术标签:

【中文标题】jQuery 和 TailwindCss 上的选项卡【英文标题】:Tabs on jQuery and TailwindCss 【发布时间】:2021-06-17 19:27:42 【问题描述】:

设备有问题。 我的设计中有标签,当我进入页面时,它们都是打开的,当我选择某个标签时,其余的都是隐藏的。

        document.getElementById("one").onclick = function () 
            showTab(this)
        ;
        document.getElementById("two").onclick = function () 
            showTab(this)
        ;
        document.getElementById("three").onclick = function () 
            showTab(this)
        ;
        document.getElementById("foure").onclick = function () 
            showTab(this)
        ;

        function showTab(e) 
            let selectType = $(e).attr("data-select");
            if (selectType == 'one') 
                $("#tabs2,#tabs3,#tabs4").hide();
                $("#tabs1").show();
                $("#one").addClass('text-blue-800 active');
                $("#two,#three, #foure").removeClass('text-blue-800 active');

             else if (selectType == 'two') 

                $("#tabs1,#tabs3,#tabs4").hide();
                $("#tabs2").show();
                $("#two").addClass('text-blue-800 active');
                $("#one,#three,#foure").removeClass('text-blue-800 active').addClass('text-blue-400');

             else if (selectType == 'three') 

                $("#tabs1,#tabs2,#tabs4").hide();
                $("#tabs3").show();
                $("#three").addClass('text-blue-800 active');
                $("#one,#two,#foure").removeClass('text-blue-800 active').addClass('text-blue-400');

             else if (selectType == 'foure') 

                $("#tabs1,#tabs2,#tabs3").hide();
                $("#tabs4").show();
                $("#foure").addClass('text-blue-800 active');
                $("#one,#two,#three").removeClass('text-blue-800 active').addClass('text-blue-400');

            
        
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.0.4/tailwind.min.css" rel="stylesheet"/>
<div class="py-10">
                    <ul class="list-reset flex border-b">
                        <li class="p-0">
                            <a class="bg-white inline-block py-2 px-4 text-blue-800 font-semibold active"
                               data-select="one" id="one" href="javascript:void(0)">Tabs 1</a>
                        </li>
                        <li class="p-0">
                            <a class="bg-white inline-block py-2 px-4 text-blue-400  hover:text-blue-600 font-semibold"
                               data-select="two" id="two" href="javascript:void(0)">Tabs 2</a>
                        </li>
                        <li class="p-0">
                            <a class="bg-white inline-block py-2 px-4 text-blue-400 hover:text-blue-800 font-semibold"
                               data-select="three" id="three" href="javascript:void(0)">Tabs 3 </a>
                        </li>
                        <li class="p-0">
                            <a class="bg-white inline-block py-2 px-4 text-blue-400 hover:text-blue-800 font-semibold"
                               data-select="foure" id="foure" href="javascript:void(0)">Tabs 4 </a>
                        </li>
                    </ul>
                    <div class="content">
                        <div id="tabs1">
                            <table class="w-full bg-gray-600">
                                <tr class="h-12">
                                    <td class="w-2/3 pl-5 font-semibold text-white">name 1</td>
                                    
                                </tr>
                            </table>
                        </div>
                        <div id="tabs2" class="d-none">
                            <table class="w-full bg-gray-600">
                                <tr class="h-12">
                                    <td class="w-2/3 pl-5 font-semibold text-white">name 2</td>
                                    
                                </tr>
                            </table>
                        </div>
                        <div id="tabs3" class="d-none">
                            <table class="w-full bg-gray-600">
                                <tr class="h-12">
                                    <td class="w-2/3 pl-5 font-semibold text-white">name 3</td>
                                    
                                </tr>
                            </table>
                        </div>
                        <div id="tabs4" class="d-none">
                            <table class="w-full bg-gray-600">
                                <tr class="h-12">
                                    <td class="w-2/3 pl-5 font-semibold text-white">name 4</td>
                                    
                                </tr>
                            </table>
                        </div>
                    </div>
                </div>

在此示例中,您可以看到选项卡现在是如何工作的。也就是说,在我单击任何过渡选项卡之前,它们不会被隐藏,然后,就好像什么都没发生一样,一切正常

【问题讨论】:

您能详细说明您的问题吗?我没有得到你想要的。 @BikiMaharjan,如果你打开sn-p,你可以看到你有四个标签是活跃的,只有标签1应该是活跃的 既然你使用的是tailwind,你应该使用“隐藏”类而不是“d-none”,“d-none”来自引导程序,将d-none替换为hidden类然后它会工作正常,但重构代码的可能性很大,我会在重构后回复,但现在,将 d-none 替换为隐藏类 【参考方案1】:

我已经把你的代码重构成了这个,你可以重构更多

$(document).ready(function() 
  $(".js_tap_btn").click(function() 
    $(".js_tap_btn").removeClass("active text-blue-800").addClass("text-blue-400 hover:text-blue-800"); //removing active and font-text-800 from all tab btns, add hover:text-blue-800 in all tabs
    $(this).removeClass("text-blue-400 hover:text-blue-800").addClass("active text-blue-800"); // adding active class and text color to clicked tab
    let tab_to_show = $(this).data("tab_id"); // getting tab id to un-hide from clicked tab using data attribute;
    $(".js_tab_view").addClass("hidden"); //hiding all tabs using tailwind css;
    $(`#$tab_to_show`).removeClass("hidden"); // removing class hidden from wanted tab only, note that i am using Grave Accent symbol instead for inverted comma ;
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.0.4/tailwind.min.css" rel="stylesheet" />
<div class="py-10">
  <ul class="list-reset flex border-b">
    <li class="p-0">
      <a class="js_tap_btn bg-white inline-block py-2 px-4 text-blue-800 font-semibold active" data-tab_id="tabs1" href="javascript:void(0)">Tabs 1</a>
    </li>
    <li class="p-0">
      <a class="js_tap_btn bg-white inline-block py-2 px-4 text-blue-400 hover:text-blue-800 font-semibold" data-tab_id="tabs2" href="javascript:void(0)">Tabs 2</a>
    </li>
    <li class="p-0">
      <a class="js_tap_btn bg-white inline-block py-2 px-4 text-blue-400 hover:text-blue-800 font-semibold" data-tab_id="tabs3" href="javascript:void(0)">Tabs 3 </a>
    </li>
    <li class="p-0">
      <a class="js_tap_btn bg-white inline-block py-2 px-4 text-blue-400 hover:text-blue-800 font-semibold" data-tab_id="tabs4" href="javascript:void(0)">Tabs 4 </a>
    </li>
  </ul>
  <div class="content">
    <div id="tabs1" class="js_tab_view">
      <table class="w-full bg-gray-600">
        <tr class="h-12">
          <td class="w-2/3 pl-5 font-semibold text-white">name 1</td>
        </tr>
      </table>
    </div>
    <div id="tabs2" class="js_tab_view hidden">
      <table class="w-full bg-gray-600">
        <tr class="h-12">
          <td class="w-2/3 pl-5 font-semibold text-white">name 2</td>
        </tr>
      </table>
    </div>
    <div id="tabs3" class="js_tab_view hidden">
      <table class="w-full bg-gray-600">
        <tr class="h-12">
          <td class="w-2/3 pl-5 font-semibold text-white">name 3</td>
        </tr>
      </table>
    </div>
    <div id="tabs4" class="js_tab_view hidden">
      <table class="w-full bg-gray-600">
        <tr class="h-12">
          <td class="w-2/3 pl-5 font-semibold text-white">name 4</td>
        </tr>
      </table>
    </div>
  </div>
</div>

【讨论】:

不客气@YuraLons

以上是关于jQuery 和 TailwindCss 上的选项卡的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中条件渲染组件上的 TailwindCSS 动画

悬停在固定导航上的 tailwindcss 警报

如何在tailwindcss表中隐藏小型设备上的列?

jQuery Tabs - 当前选项卡中的引用标签?

如何使 tailwindcss 与当前的 Angular 6 一起工作?

Sass lightness() 函数不适用于 TailwindCSS 主题变量