Javascript 单击其他类时如何删除/添加类?

Javascript 单击其他类时如何删除/添加类?,javascript,jquery,onclick,Javascript,Jquery,Onclick,当类“plus”处于打开状态时,单击下面显示的所有隐藏行 默认情况下,它们是隐藏的 单击特定年份时,我如何获取该年份的月份 使用下面的代码,单击后将显示它们 <cfoutput query="getdates" group="year"> <thead> <tr> <th> <span class="plus">+</span> #year#</th> </tr>

当类“plus”处于打开状态时,单击下面显示的所有隐藏行

默认情况下,它们是隐藏的

单击特定年份时,我如何获取该年份的月份

使用下面的代码,单击后将显示它们

<cfoutput query="getdates" group="year">
  <thead>
    <tr>
      <th> <span class="plus">+</span> #year#</th>
    </tr>
  </thead>
  <cfif dtToday gte combineDates>
    <tbody class="closeAction">
      <cfoutput>
        <tr>
          <td><a href=""> #month#  </a></td>
        </tr>
      </cfoutput>
    </tbody>
  </cfif>
</cfoutput>

<style>
  .closeAction {
    display: none;
  }
</style>

<script>
  $(".plus").click(function() {
    //$('.plus',this).html('-');
    $(".closeAction").removeClass("closeAction");
  })
</script>

+#年#
.闭嘴{
显示:无;
}
$(“.plus”)。单击(函数(){
//$('.plus',this.html('-');
$(.closeAction”).removeClass(“closeAction”);
})
这是单击之前的外观:


您正在执行的操作将考虑类
closeAction
中的所有元素。你需要触发下一个。因此,您可以使用
next()


$(“.plus”)。单击(函数(){
//$('.plus',this.html('-');
$(this.next(“.closeAction”).removeClass(“closeAction”);
})
$(“.closeAction”)
正在DOM中查找具有此类的每个元素,这就是它们全部打开的原因。您希望找到与该加号关联的具有此类的元素。使用
this
可以向上移动DOM,并从事件上下文开始查找具有该类的元素<代码>这是单击事件的上下文,事件附加到的元素是加号

$(this).closest('thead').next().find('.closeAction').removeClass("closeAction");
这将上移到最近的
thead
元素,获取下一个元素,并查找其中包含
closeAction
类的所有元素


如果您可以展示一个包含更多HTML的示例,那么这段代码很可能会得到改进,但是由于我们只使用了一个plus和closeAction示例,很难知道它是什么样子。

.plus
.closeAction
元素似乎共享相同的
cfoutput
元素,因此,您可以遍历最近的
cfoutput
元素,然后从那里找到
.closeAction
元素

$(".plus").click(function () {
  $(this).closest("cfoutput").find('.closeAction').removeClass("closeAction");
})
使用
closest()
next()
之后(转到父级,然后用提供的类名搜索下一个元素)

另外,为什么要注意在
closeAction
的附件中添加
close
类,然后使用
toggleClass
打开/关闭日期:

这是一个正在工作的

片段

$(“.plus”)。单击(函数(){
$(this).closest('thead').next('closeAction').toggleClass('closed');
})
。已关闭{
显示:无;
}

+ 2015
+ 2016
+ 2017

这也是我想做的,但是那些属性似乎表明所有年份都在
cfoutput
下分组。分享我的一些想法,因为我最初的感觉是找到最高的元素,然后做一个查找。但是如果所有年份都归在
cfoutput
下,那么您仍然可以找到所有
closeAction
sTrue。我认为OP需要在他的例子中提供更多的代码来获得正确的解决方案。绝对同意!我已经要求他们这么做了。如果你能分享更多显示多个日期的最终HTML,我可以整理我的答案,使之比我提供的更好。谢谢,这项工作现在我必须解决添加减号的问题:)太好了:)我很高兴。@anatp_123表示减号
$(“.plus”)。单击(函数(){.var text='+';如果($(这个).text()='+'{text='-';}$(this).text(text).closest('thead').next('closeAction').toggleClass('closed');})
Fiddle:
$(".plus").click(function () {
  $(this).closest("cfoutput").find('.closeAction').removeClass("closeAction");
})