Saya ingin memilih semua elemen yang memiliki dua kelas adan 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 adan 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 divelemen yang memiliki ID adengan kelas bdan 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'))
bdan cditambahkan secara dinamis, dan Anda hanya ingin memilih elemen jika memiliki kelas tersebut.
.a .bmencari elemen dengan kelas byang merupakan turunan dari elemen dengan kelas a. Jadi sesuatu seperti div ahanya akan mengembalikan aelemen yang ada di dalam divelemen.
Anda dapat melakukan ini menggunakan filter()fungsi:
$(".a").filter(".b")
.adan perlu menyaring beberapa kali berdasarkan kelas arbitrer yang berbeda yang juga milik .aset asli .
Untuk kasus ini
<element class="a">
<element class="b c">
</element>
</element>
Anda harus menempatkan spasi di antara .adan.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 codedan 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 .