แม้ว่าคำถามนี้จะได้รับการตอบคำถามหลายครั้งก่อนหน้านี้ แต่ฉันคิดว่าฉันจะเพิ่มไปพร้อมกับคำตอบที่สมบูรณ์และมั่นคงสำหรับผู้ใช้ในอนาคต คำตอบหลักช่วยแก้ปัญหา แต่ฉันเชื่อว่ามันอาจจะดีกว่าที่จะรู้ / เข้าใจวิธีต่างๆในการแสดง / ซ่อนสิ่งต่าง ๆ
.
การเปลี่ยนการแสดงผลโดยใช้ css ()
นี่คือวิธีที่ฉันเคยทำจนกระทั่งฉันพบวิธีอื่น ๆ
javascript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
ข้อดี:
- ซ่อนและซ่อน เกี่ยวกับมัน.
จุดด้อย:
- หากคุณใช้แอตทริบิวต์ "display" สำหรับสิ่งอื่นคุณจะต้องฮาร์ดโค้ดมูลค่าของสิ่งที่เคยซ่อนก่อน ดังนั้นหากคุณมี "อินไลน์" คุณจะต้องทำไม่เช่น
$("#element_to_hid").css("display", "inline");นั้นจะกลับไปที่ "บล็อก" หรืออะไรก็ตามที่บังคับให้ทำ
- ยืมตัวไปที่พิมพ์ผิด
ตัวอย่าง: https://jsfiddle.net/4chd6e5r/1/
.
การเปลี่ยนการแสดงผลโดยใช้ addClass () / removeClass ()
ในขณะที่ตั้งค่าตัวอย่างสำหรับอันนี้จริง ๆ แล้วฉันพบข้อบกพร่องบางอย่างในวิธีการนี้ซึ่งทำให้ไม่น่าเชื่อถือมาก
css / javascript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
ข้อดี:
- มันซ่อน .... บางครั้ง อ้างถึง p1 ในตัวอย่าง
- หลังจากซ่อนตัวมันจะกลับไปใช้ค่าการแสดงผลก่อนหน้า .... บางครั้ง อ้างถึง p1 ในตัวอย่าง
$(".hidden")หากคุณต้องการที่จะคว้าวัตถุที่ซ่อนอยู่ทั้งหมดคุณเพียงแค่ต้องทำ
จุดด้อย:
- ไม่ซ่อนถ้าตั้งค่าการแสดงผลโดยตรงบน html อ้างถึง p2 ในตัวอย่าง
- ไม่ซ่อนหากจอแสดงผลตั้งค่าเป็น javascript โดยใช้ css () อ้างถึง p3 ในตัวอย่าง
- โค้ดเพิ่มเติมเล็กน้อยเนื่องจากคุณต้องกำหนดแอตทริบิวต์ css
ตัวอย่าง: https://jsfiddle.net/476oha8t/8/
.
การเปลี่ยนการแสดงผลโดยใช้สลับ ()
javascript:
$("element_to_hide").toggle(); // To hide and to unhide
ข้อดี:
- ใช้ได้ผลเสมอ
- ช่วยให้คุณไม่ต้องกังวลเกี่ยวกับสถานะก่อนที่จะเปลี่ยน การใช้งานที่ชัดเจนสำหรับสิ่งนี้มีไว้สำหรับปุ่มสลับ ...
- สั้นและง่าย
จุดด้อย:
- หากคุณจำเป็นต้องรู้ว่าสถานะใดที่เปลี่ยนไปเพื่อทำสิ่งที่ไม่เกี่ยวข้องโดยตรงคุณจะต้องเพิ่มรหัสเพิ่มเติม (คำสั่ง if) เพื่อดูว่ามีสถานะใดอยู่
- คล้ายกับข้อผิดพลาดก่อนหน้านี้หากคุณต้องการเรียกใช้ชุดคำสั่งที่มีการสลับ () เพื่อวัตถุประสงค์ในการซ่อน แต่คุณไม่ทราบว่าซ่อนอยู่หรือไม่คุณต้องเพิ่มการตรวจสอบ (คำสั่ง if) เพื่อค้นหาคำตอบก่อนและถ้ามันถูกซ่อนอยู่แล้วให้ข้าม อ้างถึง p1 ของตัวอย่าง
- ที่เกี่ยวข้องกับข้อเสีย 2 ข้อก่อนหน้านี้การใช้ toggle () สำหรับบางสิ่งที่ซ่อนหรือแสดงเฉพาะอาจทำให้ผู้อื่นสับสนในการอ่านรหัสของคุณเนื่องจากพวกเขาไม่รู้ว่าจะสลับกันอย่างไร
ตัวอย่าง: https://jsfiddle.net/cxcawkyk/1/
.
การเปลี่ยนการแสดงผลโดยใช้ hide () / show ()
javascript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
ข้อดี:
- ใช้ได้ผลเสมอ
- หลังจากซ่อนตัวมันจะกลับไปใช้ค่าการแสดงผลก่อนหน้า
- คุณจะรู้ได้เสมอว่าคุณกำลังเปลี่ยนสถานะใด:
- ไม่จำเป็นต้องเพิ่มถ้าคำสั่งเพื่อตรวจสอบการมองเห็นก่อนเปลี่ยนสถานะหากสถานะมีความสำคัญ
- จะไม่สับสนผู้อื่นอ่านรหัสของคุณเป็นสถานะที่คุณสลับไปถ้าหากรัฐสำคัญ
- ที่ใช้งานง่าย
จุดด้อย:
- หากคุณต้องการเลียนแบบสลับคุณจะต้องตรวจสอบสถานะก่อนแล้วจึงเปลี่ยนเป็นสถานะอื่น ใช้สลับ () แทนสิ่งเหล่านี้ อ้างถึง p2 ของตัวอย่าง
ตัวอย่าง: https://jsfiddle.net/k0ukhmfL/
.
โดยรวมแล้วฉันจะบอกว่าวิธีที่ดีที่สุดที่จะซ่อน () / แสดง () เว้นแต่คุณจะต้องการให้สลับเป็นพิเศษ ฉันหวังว่าคุณจะพบว่าข้อมูลนี้มีประโยชน์
return falseในonclick?