Saya ingin memilih semua elemen yang memiliki dua kelas a
dan b
.
<element class="a b">
Jadi, hanya elemen yang memiliki kedua kelas.
Ketika saya menggunakannya $(".a, .b")
memberi saya persatuan, tetapi saya ingin persimpangan.
Saya ingin memilih semua elemen yang memiliki dua kelas a
dan b
.
<element class="a b">
Jadi, hanya elemen yang memiliki kedua kelas.
Ketika saya menggunakannya $(".a, .b")
memberi saya persatuan, tetapi saya ingin persimpangan.
Jawaban:
Jika Anda ingin mencocokkan hanya elemen dengan kedua kelas (persimpangan, seperti logika AND), cukup tulis selektor bersama - sama tanpa spasi di antaranya:
$('.a.b')
Pesanan tidak relevan, jadi Anda juga dapat menukar kelas:
$('.b.a')
Jadi, untuk mencocokkan div
elemen yang memiliki ID a
dengan kelas b
dan c
, Anda akan menulis:
$('div#a.b.c')
(Dalam praktiknya, Anda kemungkinan besar tidak perlu mendapatkan yang spesifik, dan ID atau pemilih kelas dengan sendirinya biasanya cukup:. $('#a')
)
b
dan c
ditambahkan secara dinamis, dan Anda hanya ingin memilih elemen jika memiliki kelas tersebut.
.a .b
mencari elemen dengan kelas b
yang merupakan turunan dari elemen dengan kelas a
. Jadi sesuatu seperti div a
hanya akan mengembalikan a
elemen yang ada di dalam div
elemen.
Anda dapat melakukan ini menggunakan filter()
fungsi:
$(".a").filter(".b")
.a
dan perlu menyaring beberapa kali berdasarkan kelas arbitrer yang berbeda yang juga milik .a
set asli .
Untuk kasus ini
<element class="a">
<element class="b c">
</element>
</element>
Anda harus menempatkan spasi di antara .a
dan.b.c
$('.a .b.c')
$('.a .c.b')
juga akan berfungsi?
$('.a > element')
Masalah yang Anda hadapi, adalah bahwa Anda menggunakan Group Selector
, sedangkan Anda harus menggunakan Multiples selector
! Untuk lebih spesifik, Anda menggunakan $('.a, .b')
sedangkan Anda harus menggunakan $('.a.b')
.
Untuk informasi lebih lanjut, lihat ikhtisar tentang berbagai cara untuk menggabungkan penyeleksi di sini!
Pilih semua <h1>
elemen DAN semua <p>
elemen DAN semua <a>
elemen:
$('h1, p, a')
Pilih semua <input>
elemen type
text
, dengan kelas code
dan red
:
$('input[type="text"].code.red')
Pilih semua <i>
elemen di dalam <p>
elemen:
$('p i')
Pilih semua <ul>
elemen yang merupakan anak langsung dari suatu <li>
elemen:
$('li > ul')
Pilih semua <a>
elemen yang ditempatkan segera setelah <h2>
elemen:
$('h2 + a')
Pilih semua <span>
elemen yang merupakan saudara <div>
elemen:
$('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>
Solusi JavaScript vanila: -
document.querySelectorAll('.a.b')
Untuk kinerja yang lebih baik, Anda dapat menggunakan
$('div.a.b')
Ini akan melihat hanya melalui elemen div alih-alih melangkah melalui semua elemen html yang Anda miliki di halaman Anda.
Pemilih Grup
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;}
Menjadi ini:
body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
Jadi, dalam kasus Anda, Anda telah mencoba pemilih grup sedangkan persimpangannya
$(".a, .b")
alih-alih gunakan ini
$(".a.b")
Anda dapat menggunakan getElementsByClassName()
metode untuk apa yang Anda inginkan.
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>
Ini adalah solusi tercepat juga. Anda dapat melihat patokan tentang itu di sini .