上一页全部() 并按子状态进行筛选
prevAll() and filter by child presence
我有以下(人工)DOM:
<div class="something">xxx</div>
<div class="something">
<div class="essence">yyy</div>
</div>
<div class="something">zzz</div>
<div class="something">
<div class="essence">111</div>
</div>
然后在$(document).ready
中,我做到了:
$('.essence').click(function()
{
$(this).parent().prevAll('.something > .essence').toggle();
$(this).parent().nextAll('.something > .essence').toggle();
});
它似乎不起作用..
基本上,我想隐藏/显示单击元素的父级的所有前后兄弟姐妹,这些兄弟姐妹不包含与单击元素具有相同类的子级。
请帮忙。如果这看起来含糊不清,请道歉
我强调了您要求的重要部分:
我想隐藏单击元素父级的所有前后兄弟姐妹,这些兄弟姐妹不包含与单击元素具有相同类的子级。
这将转化为
$(this).parent().siblings().not(':has(> .' + this.className + ')').hide();
或
var className = this.className;
$(this).parent().siblings().filter(function() {
return $(this).children('.' + className).length === 0;
}).hide();
解释
为什么你的代码不起作用:
.prevAll
和 .nextAll
获取元素的后续同级的上述内容,当且仅当它们与选择器匹配时。在您的情况下,所有兄弟姐妹都有类something
。选择器不匹配其中任何一个,因为它仅匹配具有类essence
的元素,这些元素是具有类 something
的元素的子元素。
我理解你试图做什么,但这不是这些方法的工作方式。
你可以
试试这个
$('.essence').click(function()
{
var className = $(this).attr('class');
$(this).parent().siblings().filter(function(){
return !$(this).children('.'+className).length;
}).toggle();
});
演示。
你可以像这样使用 :has() 扩展名:
$(this).parent().siblings('.something:has(.essence)').toggle();
这将选择所有 .parent() 的同级,这些同级属于 .something 类并包含类 .essence 的后代。您也可以这样做,根据文档,这可能更快:
$(this).parent().siblings('.something').has('.essence').toggle();
当我看到它在行动时,这是一种奇怪的行为,所以很难知道它是否正是你所需要的。如果您想切换所有没有 .essence 类子级的兄弟姐妹,请尝试以下操作:
$(this).parent().siblings('.something').not(':has(.essence)').toggle();
您的代码应更改为以下内容:
$('.essence').click(function()
{
$(this).parent().siblings().not(':has("> div")').toggle();
});
相关文章:
- 事件和状态
- 获取选择框的状态
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 使用AngularJS中的筛选器更新给定的表
- 如何使用密码检测网络中的状态连接
- Ember.js-接口状态应该存储在哪里
- 淘汰搜索/筛选
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 在Angular 2中布线期间保持零部件处于活动状态
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 使用单个列筛选进行状态保存
- 如何创建具有空白选项和未筛选状态的动态选择字段
- 在 Dojo 增强网格筛选器栏上设置状态文本
- 单个列筛选不保存下拉列表 jQuery 的状态
- 上一页全部() 并按子状态进行筛选
- 通过orderBy和/或筛选器修改ng repeat时重置状态
- 如果Jquery中已筛选,则保持筛选状态
- 尝试保留筛选器状态时键入错误-Kendo UI网格
- 如何跨页面加载保存网格筛选器状态