当前位置: 首页 > 知识库问答 >
问题:

用Javascript而不是jQuery编写

方梓
2023-03-14

嗨,我已经习惯了用jQuery编写代码,现在想学习用普通的Javascript编写代码。我用这个例子来显示和隐藏一些选项卡,使用的jQuery,工作正常,但是在JavaScript中如何用不同的方式来编写呢?

我试着比较它们的写法有多不同,这样我就能更好地理解它。如有任何关于如何完成此操作的帮助/提示,将不胜感激。

null

setTimeout(function() {
    $('.tabContainer a').click(function(event) {
      event.preventDefault();
      $(this).parent().addClass("current");  
      $(this).parent().siblings().removeClass("current");    
      var activeTab = $(this).attr("href");
      $('.tabContent').not(activeTab).css("display","none");
      $(activeTab).fadeIn();
    });
  },1000);
.tabContent {display: none;}
#tab1 {display: block;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tabWrapper">
  <ul class="tabContainer">
    <li class="current"><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
  </ul>
  
  <div id="tab1" class="tabContent">Tab 1</div>
  <div id="tab2" class="tabContent">Tab 2</div>
  <div id="tab3" class="tabContent">Tab 3</div>
</div>

null

共有1个答案

廖鸿达
2023-03-14

除FADEIN外,您可以尝试以下方式:

null

setTimeout(function() {
    //get all a elements and loop through them
    document.querySelectorAll('.tabContainer a').forEach(function(el){
      
      //attach click event to the current element
      el.addEventListener('click', function(event) {
        event.preventDefault();
        
        //remove the class current from all 
        this.closest('.tabContainer')
          .querySelector('.current')
          .classList.remove("current");
        
        //add the class current to the current element's closest li
        this.closest('li').classList.add("current");
        
        //set display style none to all
        document.querySelectorAll('.tabContent').forEach(function(a){
          a.style.display = "none";
        });
        var activeTab = this.getAttribute("href");
        
        //set display style block to the mached element
        document.querySelector(activeTab).style.display = "block";
      });
    
    });
}, 1000);
.tabContent {display: none;}
#tab1 {display: block;}
html lang-html prettyprint-override"><div class="tabWrapper">
  <ul class="tabContainer">
    <li class="current"><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
    <li><a href="#tab3">Tab 3</a></li>
  </ul>
  
  <div id="tab1" class="tabContent">Tab 1</div>
  <div id="tab2" class="tabContent">Tab 2</div>
  <div id="tab3" class="tabContent">Tab 3</div>
</div>
 类似资料:
  • 我想在执行某个函数时关闭引导模式,但当再次打开模式时,我必须双击才能打开它,我想用一键再次打开,而不是双击,谢谢 关闭引导模式(js)的我的代码

  • 问题内容: 如何在JavaScript或jQuery中访问PHP变量?我要写吗 我知道我可以在cookie中存储一些变量,并通过cookie访问这些值,但是cookie中的值是相对稳定的值。而且,有一个限制,您不能在cookie中存储许多值,并且该方法不是很方便。有更好的方法吗? 问题答案: 您的示例展示了将PHP变量传递给JavaScript的最简单方法。您还可以将json_encode用于数组

  • 问题内容: 目前使用jQuery,当我需要在发生点击时做一些事情时,我会像这样… 我正在看别人在项目上有的代码,他们这样做是… 请注意,就我所知,它似乎在做相同的事情,除了它们使用的是live()函数(现在已弃用并且jQuery文档说要使用live()函数),但是无论哪种方式,为什么要使用live / on()而不是我的第一个示例? 问题答案: 因为您可能具有动态生成的元素(例如,来自AJAX调用

  • 问题内容: 快速的问题,我知道我们可以 改变 一个内容 通过使用: 现在,有没有一种方法可以将内容 添加 到div而不是替换它???这样我就可以 (当然使用类似的东西) 问题答案:

  • 问题内容: 什么时候使用,更重要的是,为什么要使用它而不是? 问题答案: 从理论上讲,根据RFC 4329,。 假定的原因与该类型是可读还是可执行无关。这是因为语言/类型本身(而非通用参数)规定了自定义字符集确定机制。的子类型应该能够通过代理更改为另一个字符集,从而更改charset参数。JavaScript并非如此,因为: 一个。RFC表示用户代理应在脚本上进行BOM嗅探以确定类型(不过我不确定

  • 问题内容: 我试图根据每个DIV的类别切换网站上某些DIV元素的可见性。我正在使用基本的JavaScript代码片段进行切换。问题在于该脚本仅使用,而JavaScript不支持。不幸的是,我必须使用class而不是id来命名DIV,因为DIV名称是由我的XSLT样式表使用某些类别名称动态生成的。 我知道某些浏览器现在支持,但是由于Internet Explorer不支持,所以我不想走这条路。 我发