ตรวจสอบโดยใช้ jQuery หากองค์ประกอบคือ 'display: none' หรือบล็อกเมื่อคลิก


239

ฉันต้องการตรวจสอบและจัดเรียงองค์ประกอบที่ซ่อนอยู่ เป็นไปได้หรือไม่ที่จะหาองค์ประกอบทั้งหมดที่มีคุณลักษณะdisplayและความคุ้มค่าnone?

คำตอบ:


542

คุณสามารถใช้: มองเห็นได้สำหรับองค์ประกอบที่มองเห็นและ: ซ่อนอยู่เพื่อหาองค์ประกอบที่ซ่อนอยู่ องค์ประกอบนี้ได้ซ่อนแอตทริบิวต์การตั้งค่าให้displaynone

hiddenElements = $(':hidden');
visibleElements = $(':visible');

เพื่อตรวจสอบองค์ประกอบเฉพาะ

if($('#yourID:visible').length == 0)
{

}

องค์ประกอบจะถูกมองเห็นหากใช้พื้นที่ในเอกสาร องค์ประกอบที่มองเห็นได้มีความกว้างหรือความสูงที่มากกว่าศูนย์ อ้างอิง

นอกจากนี้คุณยังสามารถใช้is ()ด้วย:visible

if(!$('#yourID').is(':visible'))
{

}

หากคุณต้องการตรวจสอบค่าการแสดงผลคุณสามารถใช้css ()

if($('#yourID').css('display') == 'none')
{

}

หากคุณใช้แสดงค่าต่อไปนี้displayสามารถมีได้

แสดงผล: ไม่มี

จอแสดงผล: อินไลน์

จอแสดงผล: บล็อก

display: list-item

จอแสดงผล: บล็อกแบบอินไลน์

ตรวจสอบรายชื่อที่สมบูรณ์ของการที่เป็นไปได้displayค่าที่นี่

เพื่อตรวจสอบคุณสมบัติการแสดงผลด้วย JavaScript

var isVisible = document.getElementById("yourID").style.display == "block";
var isHidden = document.getElementById("yourID").style.display == "none"; 

ดีในสถานการณ์ของฉันแต่ละองค์ประกอบมีรหัสดังนั้นเคล็ดลับการทำงานสำหรับฉัน :)
นิโคลัสฟรานซิส

2
@NicholasFrancis ฉันได้อัปเดตคำตอบของฉันเพื่อค้นหาองค์ประกอบทั้งหมดที่ซ่อนอยู่
Adil

มันตรวจสอบแบบอินไลน์ css ด้วยหรือไม่ ฉันมี css display: block;เขียนแบบอินไลน์มาจาก jquery ฉันไม่สามารถตรวจสอบได้ด้วยวิธีการของคุณ ช่วยฉันด้วย.
Gaurav Manral

มีการเพิ่ม jQuery และคุณกำลังเข้าถึงองค์ประกอบหลังจากถูกเพิ่มใน DOM หรือไม่ คุณสามารถแสดงรหัสให้ฉันได้ไหม มันจะเป็นการดีกว่าถ้าจะสาธิตบนjsfiddle.net
Adil

JavaScript คืออะไร
TheBlackBenzKid

56
$("element").filter(function() { return $(this).css("display") == "none" });

7
1: นี้เป็นจริงมีประโยชน์มากกว่าคำตอบที่ได้รับการยอมรับสำหรับคำถามที่ถามstyle="display: none;"เช่นนี้จะทำงานแม้ว่าองค์ประกอบหลักมี คำตอบที่ใช้:visibleและ:hiddenจะล้มเหลวหากคุณต้องการให้องค์ประกอบเฉพาะสามารถมองเห็นได้และองค์ประกอบหลักถูกซ่อนเนื่องจากตัวเลือกเหล่านั้นกลับมาแสดงผลโดยรวมในหน้า (ซึ่งไม่ใช่คำถามที่ถาม)
Gone Coding

สิ่งนี้จะทำงานเมื่อรันการทดสอบรวมกันในสภาพแวดล้อม JS DOM
b01

สำหรับปลั๊กอินการแท็บการตั้งค่าเป็นvisibility: 'hidden';css ดังนั้นการตรวจสอบก็สิ้นสุดลงเช่นกัน:$(this).css('visibility') != 'hidden'
phyatt

30

ใช่คุณสามารถใช้ cssfunction ได้ ด้านล่างจะค้นหา div ทั้งหมด แต่คุณสามารถแก้ไขได้ตามองค์ประกอบที่คุณต้องการ

$('div').each(function(){

    if ( $(this).css('display') == 'none')
    {
       //do something
    }
});


11

มีสองวิธีใน jQuery เพื่อตรวจสอบการมองเห็น:

$("#selector").is(":visible")

และ

$("#selector").is(":hidden")

คุณยังสามารถรันคำสั่งตามการมองเห็นได้ในตัวเลือก

$("#selector:visible").hide()

หรือ

$("#selector:hidden").show()

6
หมายเหตุ: สิ่งนี้จะไม่ส่งคืนแอตทริบิวต์ที่มองเห็นได้เฉพาะขององค์ประกอบที่เลือกตามที่คำถามถามเนื่องจาก:visibleยังขึ้นอยู่กับการมองเห็นของบรรพบุรุษ หากบรรพบุรุษเป็นdisplay: noneลูกหลานทั้งหมดจะไม่สามารถมองเห็นได้โดยไม่คำนึงถึงdisplayสถานะ
Gone Coding

10
$('#selector').is(':visible');

3
หมายเหตุ: สิ่งนี้จะไม่ส่งคืนแอตทริบิวต์ที่มองเห็นได้เฉพาะขององค์ประกอบที่เลือกตามที่คำถามถามเนื่องจาก:visibleยังขึ้นอยู่กับการมองเห็นของบรรพบุรุษ หากบรรพบุรุษเป็นdisplay: noneลูกหลานทั้งหมดจะไม่สามารถมองเห็นได้โดยไม่คำนึงถึงdisplayสถานะ
Gone Coding
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.