ฉันต้องการที่จะเลือกองค์ประกอบทั้งหมดที่มีสองชั้นและa
b
<element class="a b">
ดังนั้นเฉพาะองค์ประกอบที่มีทั้งชั้นเรียน
เมื่อฉันใช้$(".a, .b")
มันทำให้ฉันมีสหภาพ แต่ฉันต้องการแยก
ฉันต้องการที่จะเลือกองค์ประกอบทั้งหมดที่มีสองชั้นและa
b
<element class="a b">
ดังนั้นเฉพาะองค์ประกอบที่มีทั้งชั้นเรียน
เมื่อฉันใช้$(".a, .b")
มันทำให้ฉันมีสหภาพ แต่ฉันต้องการแยก
คำตอบ:
ถ้าคุณต้องการจับคู่อิลิเมนต์ที่มีทั้งคลาส (จุดตัดเช่นตรรกะ AND) เพียงเขียนตัวเลือกร่วมกันโดยไม่มีช่องว่างระหว่าง:
$('.a.b')
คำสั่งซื้อไม่เกี่ยวข้องดังนั้นคุณสามารถสลับคลาสได้:
$('.b.a')
ดังนั้นเพื่อให้ตรงกับdiv
องค์ประกอบที่มี ID ของa
กับชั้นเรียนb
และc
คุณจะเขียน:
$('div#a.b.c')
(ในทางปฏิบัติคุณอาจไม่จำเป็นต้องได้รับเฉพาะเจาะจงและ ID หรือตัวเลือกชั้นเรียนด้วยตัวเองก็เพียงพอแล้ว: $('#a')
.)
b
และc
มีการเพิ่มแบบไดนามิกและคุณต้องการเลือกองค์ประกอบหากมันมีคลาสเหล่านั้น
.a .b
การค้นหาสำหรับองค์ประกอบที่มีระดับที่เป็นลูกหลานขององค์ประกอบที่มีคลาสb
a
ดังนั้นสิ่งที่ต้องการdiv a
จะกลับa
องค์ประกอบที่มีอยู่ภายในdiv
องค์ประกอบ
คุณสามารถทำได้โดยใช้filter()
ฟังก์ชั่น:
$(".a").filter(".b")
.a
และต้องการกรองคลาสตามอำเภอใจที่แตกต่างกันหลายครั้งซึ่งเป็นของ.a
ชุดเดิม
สำหรับกรณี
<element class="a">
<element class="b c">
</element>
</element>
คุณจะต้องใส่ช่องว่างระหว่าง.a
และ.b.c
$('.a .b.c')
$('.a .c.b')
ทำงานด้วยหรือไม่
$('.a > element')
ปัญหาที่คุณมีคือคุณกำลังใช้ a Group Selector
ในขณะที่คุณควรใช้ a Multiples selector
! การจะมีความเฉพาะเจาะจงมากขึ้นคุณใช้ในขณะที่คุณควรจะใช้$('.a, .b')
$('.a.b')
สำหรับข้อมูลเพิ่มเติมดูภาพรวมของวิธีต่างๆในการรวมตัวเลือกไว้ด้านล่าง!
เลือก<h1>
องค์ประกอบทั้งหมด<p>
และ<a>
องค์ประกอบทั้งหมดและองค์ประกอบทั้งหมด:
$('h1, p, a')
เลือก<input>
องค์ประกอบทั้งหมดของtype
text
พร้อมคลาสcode
และred
:
$('input[type="text"].code.red')
เลือก<i>
องค์ประกอบทั้งหมดภายใน<p>
องค์ประกอบ:
$('p i')
เลือก<ul>
องค์ประกอบทั้งหมดที่เป็นลูกของ<li>
องค์ประกอบทันที:
$('li > ul')
เลือก<a>
องค์ประกอบทั้งหมดที่วางไว้ทันทีหลังจาก<h2>
องค์ประกอบ:
$('h2 + a')
เลือก<span>
องค์ประกอบทั้งหมดที่เป็นพี่น้องของ<div>
องค์ประกอบ:
$('div ~ span')
$('.a .b , .a .c').css('border', '2px solid yellow');
//selects b and c
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="a">a
<div class="b">b</div>
<div class="c">c</div>
<div class="d">d</div>
</div>
เพียงพูดถึงกรณีอื่นที่มีองค์ประกอบ:
เช่น <div id="title1" class="A B C">
เพียงพิมพ์: $("div#title1.A.B.C")
วิธีการแก้ปัญหาวานิลลา JavaScript: -
document.querySelectorAll('.a.b')
เพื่อประสิทธิภาพที่ดีขึ้นคุณสามารถใช้
$('div.a.b')
สิ่งนี้จะมองผ่านองค์ประกอบ div แทนที่จะดูองค์ประกอบ HTML ทั้งหมดที่คุณมีในหน้าเว็บของคุณ
ตัวเลือกกลุ่ม
body {font-size: 12px; }
body {font-family: arial, helvetica, sans-serif;}
th {font-size: 12px; font-family: arial, helvetica, sans-serif;}
td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
กลายเป็นสิ่งนี้:
body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
ดังนั้นในกรณีของคุณคุณได้ลองเลือกกลุ่มในขณะที่มันแยก
$(".a, .b")
ใช้สิ่งนี้แทน
$(".a.b")
คุณไม่ต้องการjQuery
สิ่งนี้
ในVanilla
สิ่งที่คุณสามารถทำได้:
document.querySelectorAll('.a.b')
รหัสของคุณ$(".a, .b")
จะใช้ได้กับองค์ประกอบหลายรายการด้านล่าง
<element class="a">
<element class="b">
ถ้าคุณต้องการเลือกองค์ประกอบที่มี a และ b ทั้งคลาสเหมือน<element class="a b">
ใช้ js โดยไม่มีอาการโคม่า
$('.a.b')
คุณสามารถใช้getElementsByClassName()
วิธีการสำหรับสิ่งที่คุณต้องการ
var elems = document.getElementsByClassName("a b c");
elems[0].style.color = "green";
console.log(elems[0]);
<ul>
<li class="a">a</li>
<li class="a b">a, b</li>
<li class="a b c">a, b, c</li>
</ul>
นี่คือทางออกที่เร็วที่สุดเช่นกัน คุณสามารถดูมาตรฐานเกี่ยวกับที่นี่
var elem = document.querySelector (". ab");