Jquery: วิธีตรวจสอบว่าองค์ประกอบมีคลาส / สไตล์ css ที่แน่นอนหรือไม่


86

ฉันมี div:

<div class="test" id="someElement" style="position: absolute"></div>

มีวิธีตรวจสอบองค์ประกอบบางอย่างหรือไม่:

$("#someElement") 

มีคลาสเฉพาะ (ในกรณีของฉันคือ "test")

อีกวิธีหนึ่งมีวิธีตรวจสอบว่า en element มีลักษณะที่แน่นอนหรือไม่? ในตัวอย่างนี้ฉันต้องการทราบว่าองค์ประกอบมี " position: absolute" หรือไม่

ขอบคุณมาก!


14
ไม่แน่ใจว่าเป็นคำถามหรือคำตอบที่ผิด แต่คำถามมี style = "test" และคำตอบจะมองหา class = "test"
wheresrhys

1
ฉันเดาว่าคำถามผิดเนื่องจากเขาทำเครื่องหมายคำตอบผิดว่าถูก แต่ไม่ว่าหลังจากดูคะแนนโหวตแล้วฉันคิดว่าคนส่วนใหญ่สะดุดที่นี่เพื่อหาคำตอบที่ถูกต้องสำหรับคำถามที่ไม่ถูกต้องนี้ ... เอ่อถ้ามันสมเหตุสมผล ... คำตอบจาก DrJokepu ฉันหมายถึง อย่างน้อยฉันก็มาที่นี่
BrainSlugs83

คำตอบ:



281

CSS Styles คือคู่คีย์ - ค่าไม่ใช่แค่ "แท็ก" โดยค่าเริ่มต้นแต่ละองค์ประกอบจะมีชุดรูปแบบ CSS เต็มรูปแบบที่กำหนดให้โดยส่วนใหญ่จะใช้ค่าเริ่มต้นของเบราว์เซอร์โดยปริยายและบางส่วนได้รับการกำหนดใหม่อย่างชัดเจนในสไตล์ชีต CSS

หากต้องการรับค่าที่กำหนดให้กับรายการ CSS ขององค์ประกอบและเปรียบเทียบ:

if ($('#yourElement').css('position') == 'absolute')
{
   // true
}

หากคุณไม่ได้กำหนดสไตล์ใหม่คุณจะได้รับเบราว์เซอร์เริ่มต้นสำหรับองค์ประกอบนั้น ๆ


3
ไม่มีทางทำได้ด้วยตัวเลือก?
BrainSlugs83

ด้วยสิ่งนี้คุณจะเห็นว่าคุณสมบัติที่แท้จริงคืออะไรสิ่งที่ฉันต้องรู้คือหากคุณสมบัตินี้ถูกตั้งค่าโดยตรงหรือได้รับการสืบทอดมาจากสไตล์ css / เบราว์เซอร์ ... เป็นไปได้หรือไม่?
ante.sabo

ดูเหมือนจะไม่ทำงานในสถานการณ์นี้หากค่า DOM เปลี่ยนแปลง / css ของออบเจ็กต์เปลี่ยนไปหลังจากโหลดเพจ มีความคิดอย่างไรที่จะรับชมการเปลี่ยนแปลง css หลังจากโหลด DOM
ไหปลาร้า

@Collarbone คุณสามารถใช้ setTimeout () และ clearTimeout () เพื่อชะลอการโทรออกไปหนึ่งวินาทีเมื่อโหลดเอกสารเสร็จแล้ว
probie


4

หรือหากคุณต้องการเข้าถึงองค์ประกอบที่มีคุณสมบัตินั้นและไม่ได้ใช้รหัสคุณสามารถไปที่เส้นทางนี้:

$("img").each(function () {
        if ($(this).css("float") == "left") { $(this).addClass("left"); }
        if ($(this).css("float") == "right") { $(this).addClass("right"); }
    })

1

ฉันพบวิธีแก้ปัญหาหนึ่ง:

$("#someElement")[0].className.match("test")

แต่ฉันเชื่อว่ามีวิธีที่ดีกว่านี้!


1

คำถามคือขอสองสิ่งที่แตกต่างกัน:

  1. องค์ประกอบมีคลาสที่แน่นอน
  2. องค์ประกอบมีลักษณะที่แน่นอน

คำถามที่สองได้รับคำตอบแล้ว สำหรับคนแรกฉันจะทำแบบนี้:

if($("#someElement").is(".test")){
    // Has class test assigned, eventually combined with other classes
}
else{
    // Does not have it
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.