-
1. Data: 2011-09-24 08:53:03
Temat: E1 ~ E2 w JavaScript
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
W CSS3 jest bardzo wygodny selektor E1 ~ E2, oznaczający ,,takie E2, którego
starszym rodzeństwem jest E1". Zresztą, co ja Wam będę tłumaczył ;) .
Jest coś podobnego w JavaScript/DOM?
Powiedzmy że znam E1. Chciałbym znaleźć pierwszy następujący po nim element
spełniający określone kryteria, niech będzie że ma to być wyliczenie z
numeracją (<ol>). Między E1 a tym E2 (<ol>) może występować dowolna liczba
innych elementów. Jest na to jakiś prosty sposób czy muszę sprawdzać
E.nextSibling tak długo, aż nie będzie spełniał moich kryteriów?
Z góry dzięki za podpowiedzi.
(FUT na pl.comp.www)
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
2. Data: 2011-09-24 09:05:51
Temat: Re: E1 ~ E2 w JavaScript
Od: "|<onrad" <k...@g...pl>
On Sat, 24 Sep 2011 10:53:03 +0200, Mirosław Zalewski wrote:
> W CSS3 jest bardzo wygodny selektor E1 ~ E2, oznaczający ,,takie E2,
> którego starszym rodzeństwem jest E1". Zresztą, co ja Wam będę tłumaczył
> ;) .
a jaka jest roznica miedzy
E1 ~ E2 {}
a zwykłym
E1 E2 {}
bo ja bym po prostu użył tego drugiego :)
--
pozdrawiam, Konrad Karpieszuk
-
3. Data: 2011-09-24 09:16:18
Temat: Re: E1 ~ E2 w JavaScript
Od: Peter May <p...@o...pl>
W dniu 24-09-2011 10:53, Mirosław Zalewski pisze:
> W CSS3 jest bardzo wygodny selektor E1 ~ E2, oznaczający ,,takie E2, którego
> starszym rodzeństwem jest E1". Zresztą, co ja Wam będę tłumaczył ;) .
>
> Jest coś podobnego w JavaScript/DOM?
>
> Powiedzmy że znam E1. Chciałbym znaleźć pierwszy następujący po nim element
> spełniający określone kryteria, niech będzie że ma to być wyliczenie z
> numeracją (<ol>). Między E1 a tym E2 (<ol>) może występować dowolna liczba
> innych elementów. Jest na to jakiś prosty sposób czy muszę sprawdzać
> E.nextSibling tak długo, aż nie będzie spełniał moich kryteriów?
>
> Z góry dzięki za podpowiedzi.
Ja korzystam z takiego "walker"-a:
https://gist.github.com/41440
Od razu załatwiałem sobie problem nodów typu comments w IE :-) Może Ci
się to przyda.
--
Peter
-
4. Data: 2011-09-24 09:19:03
Temat: Re: E1 ~ E2 w JavaScript
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
sobota, 24 września 2011 11:05 wielka mądrość na czytelników pl.comp.www
spłynęła, gdy tako rzekł(a) |<onrad:
> a jaka jest roznica miedzy
>
> E1 ~ E2 {}
(Zapis uproszczony)
Złapie:
<div>
<E1/>
<h2/>
<h2/>
<E2/> <!-- o ten-->
</div>
> a zwykłym
>
> E1 E2 {}
Złapie:
<E1>
<div>
<span>
<E2/><!-- o ten -->
</span>
</div>
</E1>
W tym przypadku mogę użyć E1.getElementsByTagName('E2')
Przy czym Ty mówisz o selektorach CSS, a ja muszę to zrobić w JavaScripcie.
Do tego E2 muszę dodać trochę nowych elementów, część poukrywać, podpiąć
obsługę zdarzeń. W czystym CSS, choćby najbardziej zaawansowanym, nie da
rady.
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
5. Data: 2011-09-24 10:01:20
Temat: Re: E1 ~ E2 w JavaScript
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
sobota, 24 września 2011 11:16 wielka mądrość na czytelników pl.comp.www
spłynęła, gdy tako rzekł(a) Peter May:
> Ja korzystam z takiego "walker"-a:
> https://gist.github.com/41440
>
> Od razu załatwiałem sobie problem nodów typu comments w IE :-) Może Ci
> się to przyda.
Dzięki. Wygląda na to, że spełnia swoje zadanie.
Mam rozumieć, że JavaScript/DOM nie ma na to żadnego wbudowanego sposobu?
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
6. Data: 2011-09-24 10:20:51
Temat: Re: E1 ~ E2 w JavaScript
Od: Peter May <p...@o...pl>
W dniu 24-09-2011 12:01, Mirosław Zalewski pisze:
> sobota, 24 września 2011 11:16 wielka mądrość na czytelników pl.comp.www
> spłynęła, gdy tako rzekł(a) Peter May:
>
>> Ja korzystam z takiego "walker"-a:
>> https://gist.github.com/41440
>>
>> Od razu załatwiałem sobie problem nodów typu comments w IE :-) Może Ci
>> się to przyda.
>
> Dzięki. Wygląda na to, że spełnia swoje zadanie.
>
> Mam rozumieć, że JavaScript/DOM nie ma na to żadnego wbudowanego sposobu?
Ależ właśnie powyższy link, który zawiera kod JavaScript, właśnie
korzysta z "wbudowanych" metod DOM. Tyle, że z małymi poprawkami dla IE
i nieco trochę rozszerzonymi funkcjami ułatwiającymi życie programisty.
Standardowo np. nie ma wbudowanej metody getAllNext, ale korzystając z
już istniejących dało się ją napisać :-) Tak samo, jak z całą masą
innych rzeczy, jak np. trim.
--
Peter
-
7. Data: 2011-09-24 12:59:37
Temat: Re: E1 ~ E2 w JavaScript
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
sobota, 24 września 2011 12:20 wielka mądrość na czytelników pl.comp.www
spłynęła, gdy tako rzekł(a) Peter May:
> Ależ właśnie powyższy link, który zawiera kod JavaScript, właśnie
> korzysta z "wbudowanych" metod DOM. Tyle, że z małymi poprawkami dla IE
> i nieco trochę rozszerzonymi funkcjami ułatwiającymi życie programisty.
> Standardowo np. nie ma wbudowanej metody getAllNext, ale korzystając z
> już istniejących dało się ją napisać :-) Tak samo, jak z całą masą
> innych rzeczy, jak np. trim.
Tak, ja to doskonale rozumiem. I myślę że Ty też doskonale rozumiesz o co mi
chodzi ;) .
Zanim przeglądarki zaczęły obsługiwać indexOf na tablicach, można było sobie
pisać do tego funkcję, z ewentualnym prototypowaniem. Jasne, nie ma w tym
nic złego, ale po co korzystać z biblioteki lub pisać swoje funkcje, kiedy
silnik przeglądarki udostępnia wbudowane mechanizmy? Chodzi tylko o to, żeby
nie wyważać już otwartych drzwi, nic więcej.
Skoro w tym przypadku przeglądarki nic podobnego nie oferują, pozostaje
korzystać z zewnętrznych bibliotek (lub pisać własne).
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
8. Data: 2011-09-24 13:42:24
Temat: Re: E1 ~ E2 w JavaScript
Od: Peter May <p...@o...pl>
W dniu 24-09-2011 14:59, Mirosław Zalewski pisze:
> sobota, 24 września 2011 12:20 wielka mądrość na czytelników pl.comp.www
> spłynęła, gdy tako rzekł(a) Peter May:
>
>> Ależ właśnie powyższy link, który zawiera kod JavaScript, właśnie
>> korzysta z "wbudowanych" metod DOM. Tyle, że z małymi poprawkami dla IE
>> i nieco trochę rozszerzonymi funkcjami ułatwiającymi życie programisty.
>> Standardowo np. nie ma wbudowanej metody getAllNext, ale korzystając z
>> już istniejących dało się ją napisać :-) Tak samo, jak z całą masą
>> innych rzeczy, jak np. trim.
>
> Tak, ja to doskonale rozumiem. I myślę że Ty też doskonale rozumiesz o co mi
> chodzi ;) .
>
[...]
> Skoro w tym przypadku przeglądarki nic podobnego nie oferują, pozostaje
> korzystać z zewnętrznych bibliotek (lub pisać własne).
Czasem, niestety, nie ma gotowych rozwiązań w postaci natywnych metod
zaimplementowanych w przeglądarkę. A czasem nawet jak są, to z kolei
"zbugowane" (najczęściej w IE :P ). I tak musimy się męczyć, bo co
przeglądarka, to inna "implementacja" JavaScript-u.
BTW ciekawe zestawienie poszczególnych implementacji ECMAScript:
http://pointedears.de/scripts/test/es-matrix/
I właśnie nad tym matriksem trzeba zapanować :-)
--
Peter
-
9. Data: 2011-09-24 15:38:30
Temat: Re: E1 ~ E2 w JavaScript
Od: "|<onrad" <k...@g...pl>
On Sat, 24 Sep 2011 11:19:03 +0200, Mirosław Zalewski wrote:
> sobota, 24 września 2011 11:05 wielka mądrość na czytelników pl.comp.www
> spłynęła, gdy tako rzekł(a) |<onrad:
>
>> a jaka jest roznica miedzy
>>
>> E1 ~ E2 {}
>
> (Zapis uproszczony)
> Złapie:
> <div>
> <E1/>
> <h2/>
> <h2/>
> <E2/> <!-- o ten-->
> </div>
>
a to faktycznie nie skumalem
ja bym tu uzyl jquery i:
$("E1").next("E2")
--
pozdrawiam, Konrad Karpieszuk
-
10. Data: 2011-09-24 15:41:41
Temat: Re: E1 ~ E2 w JavaScript
Od: "|<onrad" <k...@g...pl>
On Sat, 24 Sep 2011 15:38:30 +0000, |<onrad wrote:
> On Sat, 24 Sep 2011 11:19:03 +0200, Mirosław Zalewski wrote:
>
>> sobota, 24 września 2011 11:05 wielka mądrość na czytelników
>> pl.comp.www spłynęła, gdy tako rzekł(a) |<onrad:
>>
>>> a jaka jest roznica miedzy
>>>
>>> E1 ~ E2 {}
>>
>> (Zapis uproszczony)
>> Złapie:
>> <div>
>> <E1/>
>> <h2/>
>> <h2/>
>> <E2/> <!-- o ten-->
>> </div>
>>
>>
> a to faktycznie nie skumalem
>
> ja bym tu uzyl jquery i:
>
> $("E1").next("E2")
btw, jquuery tez rozumie tyldę http://api.jquery.com/next-siblings-
selector/
--
pozdrawiam, Konrad Karpieszuk