在 jQuery 选择器中隐藏除 $(this)之外的所有内容: not

高级题目,简单问题:

如何在 jQuery 中执行以下操作(隐藏除 $(this)之外的所有内容) ?

$("table tr").click(function() {
$("table tr:not(" + $(this) + ")").hide();
// $(this) is only to illustrate my problem


$("table tr").show();
});
92275 次浏览
$(this).siblings().hide();

Traversing/Siblings

I think a solution can be this:

$("table.tr").click(function() {
$("table.tr:not(" + $(this).attr("id") + "").hide(); // $(this) is only to illustrate my problem
$(this).show();
})

--EDIT for Comment:

$("table.tr").click(function() {
$("table.tr:not(#" + $(this).attr("id") + ")").hide(); // $(this) is only to illustrate my problem
$(this).show();
})
$("table.tr").not(this).hide();

As an aside, I think you mean $("table tr") (with a space instead of a dot).
The way you have it, it selects every table which has a class of tr (eg, <table class="tr">), which is probably not what you want.

For more information, see the documentation.

If you want to combine not() with some other selectors, you can use add():

$('a').click(function(e){
$('a').not(this).add('#someID, .someClass, #someOtherID').animate({'opacity':0}, 800);
});

This would fadeout all other links, but the clicked one, and additionally fadeout some chosen ids and classes.