🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
12 messages
12 total messages Started by sawic Wed, 12 May 2010 15:01
[jQuery] Pomoc przy doborze odpowiedniego selektora.
#50050
Author: sawic
Date: Wed, 12 May 2010 15:01
28 lines
1860 bytes
Witam,

Zaimplementowałem sobie tooltip-a na stronę, który z każdego "title" 
robi dymek. Wszystko działa jak należy jeżeli chodzi o pokazywanie 
dymków, ale problem pojawia się jak chcę użyć atrybutu "title" do 
jeszcze jakichś zdarzeń JS. Niestety w paru miejscach sprawdzam coś tam 
po tytule i po zaimplementowaniu tooltip-a przestało to działać.

Na chwilę obecną tooltip-a uruchamiam po prostu czymś takim:
$("[title]").tooltip();

Elementy, które chciałbym aby nie były obsługiwane przez tooltip-a 
otoczone są elementem <span class="klasa" />. Struktura strony 
przedstawia się mniej więcej tak:

<span class="klasa">
<a href="#" title="tytul">link</a>
</span>

Chciałem wywołać tooltip-a z pominięciem wszystkich elementów 
znajdujących się w <span class="klasa" /> próbując czegoś takiego:
$(":not('.klasa') [title]").tooltip();
Niestety to nie działa.

Czy mógłby ktoś bieglejszy w tych selektorach zaproponować mi jakieś 
rozwiązanie tego problemu? Będę wdzięczny za wszelkie porady.

Pozdrawiam
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50051
Author: Paweł Piskorz
Date: Wed, 12 May 2010 16:07
15 lines
1389 bytes
On 2010-05-12 17:01, sawic wrote:
> Chciałem wywołać tooltip-a z pominięciem wszystkich elementów
> znajdujących się w <span class="klasa" /> próbując czegoś takiego:
> $(":not('.klasa') [title]").tooltip();
> Niestety to nie działa.

http://www.w3.org/TR/css3-selectors/#negation
http://api.jquery.com/not-selector/
Gdzie tam widzisz '' w :not()? :)


-- 
message[autor="PablO"]::after {
	content:"Pozdrawiam";
}
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50052
Author: sawic
Date: Wed, 12 May 2010 19:49
26 lines
1854 bytes
W dniu 2010-05-12 18:07, Paweł Piskorz pisze:
> http://www.w3.org/TR/css3-selectors/#negation
> http://api.jquery.com/not-selector/
> Gdzie tam widzisz '' w :not()? :)
>
>

Zasugerowałem się dokumentacją.
Selektor klasy wygląda tak: jQuery('.class') 
http://api.jquery.com/class-selector/
Selektora :not() używa się tak: jQuery(':not(selector)') 
http://api.jquery.com/not-selector/

Łącząc powyższe przykłady, wyszło mi: jQuery(':not(".class")').
Oczywiście przykład bez '' także próbowałem, jednak bez skutku. Obydwa 
nie działają.

Dokumentację studiowałem, ale chyba nic więcej nie wymyślę.
Czy mógłby mi ktoś rzucić przykładem, jak powinien wyglądać selektor 
wyłapujący wszystkie elementy posiadające atrybut "title" oprócz tych 
znajdujących się wewnątrz elementów posiadających klasę "klasa".

Mój pomysł to: $(":not('.klasa') [title]"). Niestety jest błędny.


Pozdrawiam
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50053
Author: Paweł Piskorz
Date: Wed, 12 May 2010 21:08
13 lines
1367 bytes
On 2010-05-12 21:49, sawic wrote:
> Zasugerowałem się dokumentacją.
> Selektor klasy wygląda tak: jQuery('.class')

Nie nie, selektor klasy wygląda tak: .class -> :not(.class) -> 
:not(.klasa) [title] -> i to przekazujesz jako parametr do jQuery:
$( ':not(.klasa) [title]' );


-- 
message[autor="PablO"]::after {
	content:"Pozdrawiam";
}
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50058
Author: Peter May
Date: Thu, 13 May 2010 01:13
27 lines
1879 bytes
W dniu 2010-05-12 17:01, sawic pisze:
> Witam,
>
> Zaimplementowałem sobie tooltip-a na stronę, który z każdego "title"
> robi dymek. Wszystko działa jak należy jeżeli chodzi o pokazywanie
> dymków, ale problem pojawia się jak chcę użyć atrybutu "title" do
> jeszcze jakichś zdarzeń JS. Niestety w paru miejscach sprawdzam coś tam
> po tytule i po zaimplementowaniu tooltip-a przestało to działać.
>
> Na chwilę obecną tooltip-a uruchamiam po prostu czymś takim:
> $("[title]").tooltip();
>
> Elementy, które chciałbym aby nie były obsługiwane przez tooltip-a
> otoczone są elementem <span class="klasa" />. Struktura strony
> przedstawia się mniej więcej tak:
>
> <span class="klasa">
> <a href="#" title="tytul">link</a>
> </span>

A po co tak? Dodaj klasę np. "notitle" do tag-u <a> i wybieraj tylko te 
elementy, które mają atrybut title i nie mają klasy "notitle". Np.

$("*[title]:not(.notitle)").tooltip();

-- 
Peter
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50054
Author: sawic
Date: Thu, 13 May 2010 06:36
9 lines
1244 bytes
W dniu 2010-05-12 23:08, Paweł Piskorz pisze:
> Nie nie, selektor klasy wygląda tak: .class -> :not(.class) ->
> :not(.klasa) [title] -> i to przekazujesz jako parametr do jQuery:
> $( ':not(.klasa) [title]' );


To także próbowałem i także nie działało.

Pozdrawiam
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50059
Author: sawic
Date: Thu, 13 May 2010 06:40
22 lines
1721 bytes
W dniu 2010-05-13 03:13, Peter May pisze:
> A po co tak? Dodaj klasę np. "notitle" do tag-u <a> i wybieraj tylko te
> elementy, które mają atrybut title i nie mają klasy "notitle". Np.
>
> $("*[title]:not(.notitle)").tooltip();
>

Wiem, że mógłbym tak zrobić, ale nie chciałbym robić zmian w dokumencie 
HTML. Musiałbym to zrobić w wielu miejscach, tak to jest niefortunnie 
napisane. Jeżeli nic nie wymyślę, to planuję zrobić tak jak 
zaproponowałeś, ale jest to ostateczność.

Prościej mi wybrać za pomocą jQuery elementy posiadające atrybut 
"title", ale nie znajdujące się wewnątrz elementu posiadającego klasę 
"klasa".

Problem dalej nierozwiązany.
Rozwiązanie zaproponowane przez Pawła Piskorza, które sprawdziłem jako 
pierwsze, także nie działa.


Pozdrawiam
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50060
Author: Peter May
Date: Thu, 13 May 2010 08:46
31 lines
2073 bytes
W dniu 2010-05-13 08:40, sawic pisze:
> W dniu 2010-05-13 03:13, Peter May pisze:
>> A po co tak? Dodaj klasę np. "notitle" do tag-u <a> i wybieraj tylko te
>> elementy, które mają atrybut title i nie mają klasy "notitle". Np.
>>
>> $("*[title]:not(.notitle)").tooltip();
>>
>
> Wiem, że mógłbym tak zrobić, ale nie chciałbym robić zmian w dokumencie
> HTML. Musiałbym to zrobić w wielu miejscach, tak to jest niefortunnie
> napisane. Jeżeli nic nie wymyślę, to planuję zrobić tak jak
> zaproponowałeś, ale jest to ostateczność.

Szybciej dokonasz zmian w dokumencie, niż znajdziesz rozwiązanie. Z 
resztą sam sobie utrudniasz pakując element w <span>-a. Zupełnie 
niepotrzebnie.

> Prościej mi wybrać za pomocą jQuery elementy posiadające atrybut
> "title", ale nie znajdujące się wewnątrz elementu posiadającego klasę
> "klasa".

Nie, prostsze jest to, co ja podałem.

> Problem dalej nierozwiązany.
> Rozwiązanie zaproponowane przez Pawła Piskorza, które sprawdziłem jako
> pierwsze, także nie działa.

Sprawdź FireBug-em czy nie masz błędów.

-- 
Peter
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50061
Author: sawic
Date: Thu, 13 May 2010 09:02
26 lines
1884 bytes
W dniu 2010-05-13 10:46, Peter May pisze:
> Szybciej dokonasz zmian w dokumencie, niż znajdziesz rozwiązanie. Z
> resztą sam sobie utrudniasz pakując element w <span>-a. Zupełnie
> niepotrzebnie.
>

Przedstawiona struktura dokumentu była oczywiście przykładowa i 
uproszczona. Zapakowanie elementów w <span /> jest konieczne.

> Nie, prostsze jest to, co ja podałem.
>

Nie, prościej mi znaleźć rozwiązanie o którym pisałem. Nie jest prosto 
dokonać zmian w xx plikach html. Zwłaszcza, że to nie wszystko mój kod.

> Sprawdź FireBug-em czy nie masz błędów.
>

No właśnie jakoś nie umiem obsługiwać firebug-a. Nie rozumiem tych 
czujek itd. Używam Web Developer-a i javascriptowej konsoli. Błędów nie 
ma. Po prostu taki selektor: $( ':not(.klasa) [title]' );  "łapie" 
wszystkie elementy z atrybutem "title", nawet te wewnątrz elementów o 
klasie "klasa".


Pozdrawiam
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50055
Author: Paweł Piskorz
Date: Thu, 13 May 2010 11:30
37 lines
2389 bytes
On 2010-05-13 08:36, sawic wrote:
> W dniu 2010-05-12 23:08, Paweł Piskorz pisze:
>> Nie nie, selektor klasy wygląda tak: .class -> :not(.class) ->
>> :not(.klasa) [title] -> i to przekazujesz jako parametr do jQuery:
>> $( ':not(.klasa) [title]' );
>
>
> To także próbowałem i także nie działało.

Ech przepraszam Cię bardzo, ale z tym selektorem dałem d..y na całej linii.
:not(.klasa) [title] łapie każdy element z title, którego przodkiem jest 
element bez klasy "klasa", czyli praktycznie wszystkie elementy z title, 
ponieważ przodkiem każdego z nich jest np. body czy html, a te nie mają 
klasy "klasa".
Musimy skorzystać z selektora potomka, czyli:
:not(.klasa) > [title] (zakładając, że *rodzicem* linku którego *nie 
chcesz* złapać jest element z klasą "klasa")
A najlepiej jeszcze doprecyzujmy:
span:not(.klasa) > a[title]
To złapie wszystkie linki z atrybutem title, poza takimi:
<span class="klasa">
<a href="#" title="tytul">link</a>
</span>
Uważaj, złapie nawet to:
<span class="klasa">
<span>
<a href="#" title="tytul">link</a>
</span>
</span>
Jeżeli dopuszczasz konstrukcję jak wyżej, wówczas najlepiej łap 
wszystkie elementy z title a następnie filtruj je w jQuery.


-- 
message[autor="PablO"]::after {
	content:"Pozdrawiam";
}
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50056
Author: Paweł Piskorz
Date: Thu, 13 May 2010 11:34
37 lines
2389 bytes
On 2010-05-13 08:36, sawic wrote:
> W dniu 2010-05-12 23:08, Paweł Piskorz pisze:
>> Nie nie, selektor klasy wygląda tak: .class -> :not(.class) ->
>> :not(.klasa) [title] -> i to przekazujesz jako parametr do jQuery:
>> $( ':not(.klasa) [title]' );
>
>
> To także próbowałem i także nie działało.

Ech przepraszam Cię bardzo, ale z tym selektorem dałem d..y na całej linii.
:not(.klasa) [title] łapie każdy element z title, którego przodkiem jest 
element bez klasy "klasa", czyli praktycznie wszystkie elementy z title, 
ponieważ przodkiem każdego z nich jest np. body czy html, a te nie mają 
klasy "klasa".
Musimy skorzystać z selektora potomka, czyli:
:not(.klasa) > [title] (zakładając, że *rodzicem* linku którego *nie 
chcesz* złapać jest element z klasą "klasa")
A najlepiej jeszcze doprecyzujmy:
:not(span.klasa) > a[title]
To złapie wszystkie linki z atrybutem title, poza takimi:
<span class="klasa">
<a href="#" title="tytul">link</a>
</span>
Uważaj, złapie nawet to:
<span class="klasa">
<span>
<a href="#" title="tytul">link</a>
</span>
</span>
Jeżeli dopuszczasz konstrukcję jak wyżej, wówczas najlepiej łap 
wszystkie elementy z title a następnie filtruj je w jQuery.


-- 
message[autor="PablO"]::after {
	content:"Pozdrawiam";
}
Re: [jQuery] Pomoc przy doborze odpowiedniego selektora.
#50057
Author: sawic
Date: Thu, 13 May 2010 18:48
29 lines
2124 bytes
W dniu 2010-05-13 13:34, Paweł Piskorz pisze:
> Ech przepraszam Cię bardzo, ale z tym selektorem dałem d..y na całej linii.
> :not(.klasa) [title] łapie każdy element z title, którego przodkiem jest
> element bez klasy "klasa", czyli praktycznie wszystkie elementy z title,
> ponieważ przodkiem każdego z nich jest np. body czy html, a te nie mają
> klasy "klasa".
> Musimy skorzystać z selektora potomka, czyli:
> :not(.klasa) > [title] (zakładając, że *rodzicem* linku którego *nie
> chcesz* złapać jest element z klasą "klasa")
> A najlepiej jeszcze doprecyzujmy:
> :not(span.klasa) > a[title]
> To złapie wszystkie linki z atrybutem title, poza takimi:
> <span class="klasa">
> <a href="#" title="tytul">link</a>
> </span>
> Uważaj, złapie nawet to:
> <span class="klasa">
> <span>
> <a href="#" title="tytul">link</a>
> </span>
> </span>
> Jeżeli dopuszczasz konstrukcję jak wyżej, wówczas najlepiej łap
> wszystkie elementy z title a następnie filtruj je w jQuery.
>

Dzięki za odpowiedź.
Teraz rozumiem w czym był problem.

Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads