改变许多和一个元素的类

时间:2015-11-06 13:21:19

标签: jquery

在以下代码中,我正在执行以下操作:

  1. 在"元素中获取所有子A标签" (链接);

    var links = element.find("a");
    
  2. 查找Id位于A标签之一的所有Div(窗格)href;

    var panes = links.map(function () { 
      return $("#" + this.href.split("#")[1]); 
    });
    
  3. 当点击其中一个链接时,我需要删除类"活动"从所有窗格中添加"活跃"类到窗格的类,其中的ID与clickedLink.href.split相同("#")[1]。

    links.bind("click", function (event) {         
    
      panes.not("id*=" + this.href.split("#")[1]).removeClass("active");
      panes("#" + this.href.split("#")[1]).addClass("active");
    
    }
    
  4. 我在(2)两个"窗格中遇到问题......"代码行。

    有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:1)

这样做的典型方法是:

  1. 从所有窗格中删除active
  2. 只需将其添加回您想要的
  3. 即可

    您不需要在panes内为第二部分选择(语法不正确,但无关紧要); id在文档中是唯一的。所以:

    links.bind("click", function (event) {    
      $.each(panes, function() { $(this).removeClass("active") });     
      $("#" + this.href.split("#")[1]).addClass("active");
    });
    

    var element = $(document.body);
    var links = element.find("a");
    
    var panes = links.map(function () { 
      return $("#" + this.href.split("#")[1]); 
    });
    
    console.log(panes);
    
    links.bind("click", function (event) {         
      $.each(panes, function() { $(this).removeClass("active") });
      $("#" + this.href.split("#")[1]).addClass("active");
    });
    .active {
      background-color: red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div id="div01">div 01</div>
    <div id="div02">div 02</div>
    <div id="div03">div 03</div>
    <div id="div04">div 04</div>
    <div id="div05">div 05</div>
    
    <a href="#div01">link to div 01</a>
    <a href="#div02">link to div 02</a>
    <a href="#div03">link to div 03</a>
    <a href="#div04">link to div 04</a>
    <a href="#div05">link to div 05</a>