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