jquery show hide表格基于数据属性和类的行

use*_*657 7 jquery

说我有一些表行:

<tr class="toplevel" data-id="3">
 ...
</tr>
<tr data-id="3">
 ...
</tr>
<tr data-id="3">
 ...
</tr>
Run Code Online (Sandbox Code Playgroud)

所以据我所知,我可以隐藏那些像班级一样的人:

$('tr.toplevel').hide();
Run Code Online (Sandbox Code Playgroud)

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

$('tr').data('3').hide();
Run Code Online (Sandbox Code Playgroud)

然而,我真正想做的是隐藏那些没有类顶级的data-id = 3的那些.

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

PSL*_*PSL 9

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

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

要么

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

请参见属性选择器

:不是选择器

小提琴