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

用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调用

  • 问题内容: 我想使用jquery validate插件来验证表单,但是我无法在html中使用’name’值-因为这是服务器应用程序也使用的字段。具体来说,我需要限制从组中选中的复选框的数量。(最多3个。)我看到的所有示例都使用每个元素的name属性。我想做的是改用类,然后为此声明一个规则。 html 这有效: 这不起作用,但是我的目标是: javascript: 是否可以这样做-是否可以在规则选项

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

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