ซ่อนทั้งหมดยกเว้น $ (this) ผ่าน: ไม่ใช่ในตัวเลือก jQuery


97

ชื่อขั้นสูงคำถามง่ายๆ:

ฉันจะทำสิ่งต่อไปนี้ใน jQuery ได้อย่างไร (ซ่อนทุกอย่างยกเว้น$(this))

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

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

คำตอบ:



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

นอกจากนี้ฉันคิดว่าคุณหมายถึง$("table tr")(มีช่องว่างแทนจุด)
วิธีที่คุณมีจะเลือกทุกตารางที่มีคลาสtr(เช่น<table class="tr">) ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ

สำหรับข้อมูลเพิ่มเติมโปรดดูที่เอกสาร


ใช่มันเป็นข้อผิดพลาดกับจุด ฉันไม่เห็นว่าวิธีนี้ง่ายกว่าโซลูชันของ Alexanders ซึ่งดูเหมือนจะสะอาดกว่า ฉันรู้ว่าฉันถามว่าจะทำอย่างไร: ไม่ แต่วิธีการของพี่น้องดูเหมือนจะสะอาดกว่า
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);
});

สิ่งนี้จะเลือนหายไปจากลิงก์อื่น ๆ ทั้งหมด แต่ลิงก์ที่ถูกคลิกและยังทำให้รหัสและคลาสที่เลือกบางส่วนจางหายไป


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
สิ่งนี้ต้องการให้คุณเพิ่มรหัสแบบสุ่มและไม่จำเป็นลงในแถวตารางทั้งหมดของคุณ (หรืออะไรก็ตามที่คุณใช้)
nickf

@ SLaks ขอบคุณสำหรับการแก้ไข ใน dow คุณอาจจำไว้ว่าบางครั้งสิ่งที่เราต้องการคือการมีคำตอบด่วนเพื่อช่วย ทำไมไม่ใช้สิ่งที่เราใส่เบา ๆ
andres descalzo

@nickf ใช่คุณพูดถูก แต่ความคิดเห็นนั้นจะเป็นการดีก่อนที่จะถาม @Kordonme ว่าพวกเขามี ID สำหรับแต่ละ TR หรือไม่
andres descalzo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.