Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][jQuery] Selektory filtrujące
Forum PHP.pl > Forum > Przedszkole
klapaucius
Mam w swoim pliku HTML pewną ilośc akapitów <p></p>. I teraz za pomocą jQuery chciałbym zrobić zbiór wybranych tylko akapitów.

Chciałbym aby w zbiorze znalazły się: pierwszy akapit oraz akapity z przedziału od 3 do 5 (oczywiście jest to tylko przykład).

No więc tworzę zbiór elementów "p", dodając do niego trzy selektory filtrujące:
:first (pierwszy el.)
:gt(3) (elementy, ktorych indeks jest wiekszy od 3)
:lt(5) (elementy, ktorych indeks jest mniejszy od 5)
Całośc wygląda następująco:
  1. $('p:first:gt(3):lt(5)').text('I przykładowo wypełniam wybrane przezemnie akapity tym oto tekstem.');


Jednak tym sposobem nie wyszukuje mi żadnego elementu, wszystkie akapity są puste... Dlaczego? Co robię źle? Czy jest jakieś inne, równie proste, ale działające rozwiązanie?
ixpack
po co kombinujesz?
- zapomniales chyba find...

  1. $('html,body').find('pre:eq(0), pre:eq(3), pre:eq(4), pre:eq(5)').text('I przykładowo wypełniam wybrane przezemnie akapity tym oto tekstem.');


jquery api dosc exclamation.gif
klapaucius
Cytat(ixpack @ 26.05.2013, 02:20:29 ) *
po co kombinujesz?
- zapomniales chyba find...

  1. $('html,body').find('pre:eq(0), pre:eq(3), pre:eq(4), pre:eq(5)').text('I przykładowo wypełniam wybrane przezemnie akapity tym oto tekstem.');


jquery api dosc exclamation.gif


A nie da się tego wykonać w taki sposób, aby podawać wybrany zakres elementów? No bo w przykładzie podałem co prawda dośc mały zakres (od 3 do 5), ale gdybym np. chciał dać zakres od 3 do 100, to już trochę mało optymalne rozwiązanie każdy akapit osobno i recznie ładować do do zbioru (za pomocą selektora filtrującego :eq(x), tak jak pokazałeś)

To moje "kombinowanie" wynika z tego, iż tworzę wtyczkę, której działanie będzie zależne od podanych parametrów, dlatego zależy mi na takim rozwiązaniu, jakie opisałem.
Greg0
  1. $("p").slice(3, 100)


jQuery.slice()
klapaucius
Cytat(Greg0 @ 26.05.2013, 12:35:49 ) *
  1. $("p").slice(3, 100)


jQuery.slice()

I o to mi chodziło. Dziękuję za pomoc : )
lobopol
To dla potomności można to zrobić tak:
[JAVASCRIPT] pobierz, plaintext
  1. $('p:eq(0), p:lt(5):gt(3)').text('a');
[JAVASCRIPT] pobierz, plaintext


choć to jest równoznaczne z:
[JAVASCRIPT] pobierz, plaintext
  1. $('p:eq(0), p:eq(4)').text('a');
[JAVASCRIPT] pobierz, plaintext


ale dla większego zakresu już spełnia swoją role
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.