จะทำลายองค์ประกอบ DOM ด้วย jQuery ได้อย่างไร


คำตอบ:


194

คือ$target.remove();สิ่งที่คุณกำลังมองหา?

https://api.jquery.com/remove/


75
แน่นอนว่าสิ่งนี้จะลบออกจากเอกสารที่มองเห็นได้เท่านั้น หากมีการอ้างอิงอื่นไปยังโหนดจาก JavaScript เช่นตัวแปร $ target ตัวเองวัตถุจะหนีจากตัวรวบรวมขยะในตอนนี้ หากคุณต้องการทำลายมันคุณต้องสูญเสียการอ้างอิงทั้งหมดไปด้วย ฉันไม่แน่ใจว่าทำไมคุณต้องการทำลายองค์ประกอบ DOM แม้ว่า บางทีคุณแค่เกลียดเป้าหมาย $ เป้าหมาย $ แย่คุณทำอะไรให้คุณบ้าง
bobince

52
$ target เป็นคนใจดีเมื่อเขาอยู่ตามลำพัง แต่เขาก็น่ารังเกียจเมื่อเขาอยู่กับเพื่อน ๆ
Sebastián Grignoli

2
จะ.empty()มีผลกระทบที่คล้ายกัน?
Saurabh Nanda

3
@SaurabhNanda - ช่องว่างจะลบเนื้อหาของวัตถุ แต่จะไม่ลบ (หรือทำลาย) วัตถุเอง
ลุค

46

หากคุณต้องการทำลายเป้าหมายอย่างสมบูรณ์คุณมีทางเลือกสองทาง ก่อนอื่นคุณสามารถลบวัตถุออกจาก DOM ตามที่อธิบายไว้ข้างต้น ...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

ตัวเลือกที่ 1 - จากนั้นแทนที่เป้าหมายด้วยวัตถุ jQuery ที่ว่างเปล่า (jQuery 1.4+)

$target = $();
console.log($target);   // empty jQuery object

ตัวเลือก 2 - หรือลบคุณสมบัติทั้งหมด (จะทำให้เกิดข้อผิดพลาดหากคุณอ้างอิงที่อื่น)

delete $target;
console.log($target);   // error: $target is not defined

อ่านเพิ่มเติม: ข้อมูลเกี่ยวกับวัตถุ jQuery ว่างเปล่าและข้อมูลเกี่ยวกับการลบ


3
ทำไมdelete $targetจะไม่ทำงาน: perfectionkills.com/understanding-delete/#misconceptions ทำไมจะไม่$target=nullทำงาน
LeeGee

@LeeGee - คุณช่วยสรุปการโพสต์ของคุณเพื่ออธิบายว่าทำไมการลบไม่ทำงานกับวัตถุ jQuery? ทำไมมันถึงดูเหมือนว่าจะทำงานเมื่อเราดูที่ console.log ($ target) ในตอนท้าย? ขอบคุณ.
ลุค

ฉันไม่สามารถอธิบายได้ดีไปกว่าบทความที่อ้างถึงซึ่งฉันพบว่ามีรายละเอียดมาก
LeeGee

สำหรับเร็กคอร์ดนี้ทำงานในคอนโซลเนื่องจากคอนโซลประเมิน JS ในขอบเขตของ eval ซึ่งอนุญาตให้ลบได้ ตัวแปรในขอบเขต "ธรรมชาติ" จะไม่ถูกลบ ใช้$target=nullแทน มันเร็วกว่าและไม่ยุ่งกับการปรับแต่งเบราว์เซอร์ภายใน
bendman

1
ลบได้ดี นั่นหมายถึงการบล็อกนั้นจะไม่ถูกปรับให้เหมาะสมโดยเอ็นจิน JS ในกรณีส่วนใหญ่นั่นไม่เกี่ยวข้องทั้งหมด เมื่อมันกลายเป็นปัญหาคุณจะมองหาวิธีลบโดยใช้ ไม่ก่อน
Charlie Martin

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