jquery根据数据属性和类显示隐藏表行

Posted

技术标签:

【中文标题】jquery根据数据属性和类显示隐藏表行【英文标题】:jquery show hide table rows based on data attribute and class 【发布时间】:2013-06-21 02:33:20 【问题描述】:

假设我有一些表格行:

<tr class="toplevel" data-id="3">
 ...
</tr>
<tr data-id="3">
 ...
</tr>
<tr data-id="3">
 ...
</tr>

据我所知,我可以隐藏具有***类的那些,例如:

$('tr.toplevel').hide();

我可以隐藏带有 data-id=3 的那些:

$('tr').data('3').hide();

但是,我真正想做的是隐藏那些 data-id=3 且没有***类的那些。

有人可以向我解释一下如何做到这一点吗?

【问题讨论】:

【参考方案1】:

您可以在 [] 表示法中使用属性选择器,并使用 [:not] 排除 .toplevel 类的属性选择器

 $('tr:not(.toplevel)[data-id="3"]').hide(); 
    ^   ^                      ^
    |   |                      |
all trs but .toplevel of which select the ones with data-id attribute value 3

或者

$('tr:not([class="toplevel"])[data-id="3"]').hide(); //Less efficient though due to explicit attribute name class

Attribute Selectors

:not Selector

Fiddle

【讨论】:

这不排除那些toplevel类的人 刚刚添加了解释和附加链接,以备不时之需【参考方案2】:

试试这个

$('tr:not(.toplevel)[data-id="3"]').hide();

$('tr[data-id="3"]').not('.toplevel').hide();

hide 是一种适用于 jQuery 对象

的方法

$('tr').data('3') 返回一个 字符串 。因此,当您尝试对其应用hide 方法时,它会抛出错误。

【讨论】:

【参考方案3】:

试试这个....

$('tr[class!="toplevel"]').data('3').hide();

选择器将获取所有没有***类的 tr(s)。然后您可以对这些元素执行任何操作

---已编辑---- 试试这个 $('tr[class!="toplevel"][data-id="3"]').hide();

【讨论】:

请参考这篇文章:***.com/questions/5309926/… 可能是一些 JQuery Conflicts for not working...

以上是关于jquery根据数据属性和类显示隐藏表行的主要内容,如果未能解决你的问题,请参考以下文章

在 django 模板中使用带有隐藏表行的 jQuery 可排序

根据选择值显示隐藏多个 div

根据列值显示/隐藏 jQuery 数据表 actionlink 按钮

jQuery 根据单元格内容显示/隐藏表格行

根据选择值过滤表行

用jquery怎么实现点击显示,再一次点击隐藏