Jquery手风琴函数,修改父类
Jquery Accordion function, alter class of parent
我有一个引导手风琴表这是工作良好。字形符号指示当前展开的是哪个表的子行。但是这个函数似乎有问题,它没有像预期的那样改变祖先元素的类。
$('.accordion-text').on('shown.bs.collapse', function () {
$(this).closest(".indicator").removeClass("glyphicon-chevron-up").addClass("glyphicon-chevron-down");
});
$('.accordion-text').on('hidden.bs.collapse', function () {
$(this).closest(".indicator").removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-up");
});
完整代码:http://jsfiddle.net/7pwg1j5f/616/
<tbody>
<tr id="package1" class="accordion-toggle" data-toggle="collapse" data-parent="#OrderPackages" data-target=".packageDetails1">
<td>123456</td>
<td>3</td>
<td><i class="indicator glyphicon glyphicon-chevron-up pull-right"></i>
</td>
</tr>
<tr>
<td colspan="3" class="hiddenRow">
<div class="accordion-text accordion-body collapse packageDetails1" id="">
<table>
<tr>
<td>Revealed item 1</td>
</tr>
<tr>
<td>Revealed item 2</td>
</tr>
</table>
</div>
</td>
</tr>
您查找.indicator
元素的方式不正确。它位于.accordion
元素母体tr
的前一tr
中。只要遵循结构,你就会得到合适的元素。此外,您可以组合这两个事件并使用toggleClass
而不是addClass
和removeClass
。下面是更新后的解决方案。
$('.accordion1').on('shown.bs.collapse hidden.bs.collapse', function () {
$(this).closest('tr').prev(".accordion-toggle").find('.indicator').toggleClass("glyphicon-chevron-up glyphicon-chevron-down");
});
.closest('tr')
-获取.accordion1
的父节点div
。
.prev('.accordion-toggle')
-获取对象的前一个兄弟对象早先获得的parent
.
.find('.indicator')
-查找.indicator
元素
.toggleClass
-切换[添加/删除]各自的类
这是更新演示
还要注意,我在html中做了一些更改,以匹配类
问题是你的父选择器永远不会从前一行提取单元格,你应该选择row,切换到previous,然后在该行下找到相关元素:
$('.accordion1').on('show.bs.collapse', function () {
$(this).parentsUntil("tbody").prev().find(".indicator").removeClass("glyphicon-chevron-up").addClass("glyphicon-chevron-down");
});
$('.accordion1').on('hide.bs.collapse', function () {
$(this).parentsUntil("tbody").prev().find(".indicator").removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-up");
});
相关文章:
- 是否可以从父类访问子类的属性
- 使用此选项选择父类内部的类
- 子类访问父类's闭包变量
- 如何通过Prototype或jquery移除子类的父类基类
- JavaScript—父类和子类/对象的此问题
- HTML&JS-如何修改CSS类的属性
- 如何使用带包装器的Javascript/jQuery动态修改CSS类
- 通过使用此组件,检索父类数据
- jQuery .not() 排除特定类的父类
- 如何在 jQuery 中获取具有特定父类的所有元素的内容,并将它们传递给 GET 变量
- 如何在单击父类的另一个子类时获取子类的值
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- hover添加类-或子类:悬停以影响父类
- Chome和Firefox阻止修改派生类'咖啡脚本中的原型
- 唯一标识父类的元素
- 无法将值从实例对象传输到父类的实例数组中
- 需要一种更好的方法来大规模修改css类
- jQuery父类更改的子级
- 在父类更改时停止HTML5音频/视频
- Jquery手风琴函数,修改父类