inilah html kasar yang saya gunakan untuk bekerja:
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li> // this is the single element I need to select
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub"></li> // this is where I need to start searching
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
Saya perlu melintasi dari .current_sub
, menemukan yang terdekat sebelumnya .par_cat
dan melakukan hal itu.
.find("li.par_cat")
mengembalikan seluruh beban .par_cat
(saya punya sekitar 30 halaman). Saya perlu menargetkan yang tunggal.
Akan sangat menghargai tips :)
jquery
html
traversal
tree-traversal
daulex
sumber
sumber
Jawaban:
Mencoba:
Mengujinya dengan markup Anda:
akan mengisi yang terdekat sebelumnya
li.par_cat
dengan "woohoo".sumber
:first
- rata ini berfungsi pada daftar elemen yang dikembalikan yang dimulai paling dekat dengan objek yang dipilih (sebagai lawan dari atas ke relatif relatif terhadap halaman)?:first
pemilih CSS yang memilih elemen pertama di DOM (mis.div.red:first
Akan memilih DIV merah pertama di DOM ) apakah jQuery menguraikan pemilih secara berbeda?Mencoba
sumber
Menggunakan prevUntil () akan memungkinkan kita untuk mendapatkan saudara jauh tanpa harus mendapatkan semua. Saya punya satu set panjang yang terlalu intensif menggunakan CPU prevAll ().
Ini mendapatkan saudara pertama sebelumnya jika cocok, jika tidak maka saudara sebelum yang cocok, jadi kami hanya membuat cadangan satu lagi dengan prev () untuk mendapatkan elemen yang diinginkan.
sumber
Saya pikir semua jawabannya kurang. Saya lebih suka menggunakan sesuatu seperti ini
Menghemat Anda tidak menambahkan: pertama di dalam pemilih dan lebih mudah dibaca dan dimengerti. Metode prevUntil () memiliki kinerja yang lebih baik juga daripada menggunakan prevAll ()
sumber
Anda dapat mengikuti kode ini:
Anda bisa mendapatkan ide dari ini.
sumber