$ (this)를 제외한 모든 항목 숨기기 : not in jQuery selector


97

고급 제목, 간단한 질문 :

jQuery에서 다음을 수행하려면 어떻게해야합니까 (를 제외한 모든 항목 숨기기 $(this))?

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

    $("table tr").show();
});

답변:



157
$("table.tr").not(this).hide();

제쳐두고 $("table tr")(점 대신 공백으로) 의미한다고 생각합니다 .
당신이 그것을 가지고있는 방식으로, 그것은 아마도 당신이 원하는 것이 아닌 tr(예 :) 클래스를 가진 모든 테이블을 <table class="tr">선택합니다.

자세한 내용은 설명서를 참조하십시오 .


네, 점에 대한 실수였습니다. 나는 어떻게 든 이것이 더 깨끗해 보이는 Alexanders 솔루션보다 얼마나 쉬운 지 보지 못합니다. 나는 내가 그것을 사용하는 방법을 물었다는 것을 알고있다 : not, 그러나 형제 자매 방법은 단지 더 깨끗해 보인다.
Kordonme

3
추가하기 위해, 당신이 클릭 한 항목이 포함 된 행을 제외하고 모든 테이블 행을 숨기려고 테이블 내에서 무언가를 클릭하는 경우 다음을 사용하십시오.$('tr').not($(this).closest('tr')).hide();
Jimbo

3
이것은 구조가 형제가 허용하는 것보다 더 복잡한 경우 특정 요소를 선택하는 데 유용합니다. 예제를 만드는 데 어려움을 겪고 있지만 그리드 자체가 아닌 그리드 내부에 항목을 숨기고 싶은 경우가 있습니다.
goodeye

6

not ()을 다른 선택기와 결합하려면 add ()를 사용할 수 있습니다.

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

이렇게하면 다른 모든 링크가 페이드 아웃되지만 클릭 된 링크는 페이드 아웃되고 추가로 선택된 일부 ID와 클래스가 페이드 아웃됩니다.


0

해결책은 다음과 같습니다.

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

-댓글 편집 :

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

당신은 의미 :not(#" + ...합니다. 또한 요소에 ID가 없으면 작동하지 않습니다.
SLaks

3
이렇게하려면 모든 테이블 행 (또는 사용중인 항목)에 임의의 불필요한 ID를 추가해야합니다.
nickf 2009-08-25

@ SLaks, 정정 해 주셔서 감사합니다. 다우에서, 때때로 우리가 찾는 것은 도움이되는 빠른 답변을받는 것임을 염두에 둘 수 있습니다. 우리가 넣은 것을 가볍게 받아들이지 않겠습니까?
andres descalzo

@nickf, 예, 맞습니다.하지만 그 코멘트는 먼저 @Kordonme에게 각 TR에 대한 ID가 있는지 물어 보는 것이 좋습니다.
andres descalzo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.