Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JQuery] dostęp do elementu o zadanym, "egzotycznym" id
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ciembor
Wszystko działa, jeśli pobieram jakiś element o konwencjonalnie nazwanym id, np:

Kod
alert($("#content").html());


działa wyśmienicie. Jednak nie mogę się dobrać do czegoś takiego:

Kod
alert($("#pl-about.htm").html());


co mnie niesamowicie rozczarowuje, gdyż zgodnie z tym źródłem:

http://www.electrictoolbox.com/valid-chara...l-id-attribute/

ten kod jest poprawny. Ktoś wie jak to przeskoczyć, bez zmiany id? Muszę sprawdzić, czy w dokumencie istnieje div o zadanym id, jeżeli tak, to go wyświetlić, a jeżeli nie, to go załadować z zewnętrznego pliku (pl-about.htm).
everth
To że jest poprawny to nie znaczy jeszcze że działający. Różne przeglądarki różnie podchodzą do tego tematu - w zasadzie lepiej nie używać w idach żadnych znaków specjalnych poza '-_A-Z0-9' Jak koniecznie chcesz z ida pobrać nazwę pliku to zamień . choćby na _ (a później przy odzyskiwaniu nazwy odwrotnie).
ciembor
hmm... pomyślę od tym, ale póki co próbuję jeszcze walczyć. Coś takiego działa:

Kod
alert($("#pl-about\\.htm").html());


Teraz tak, id trzymam w zmiennej newHash. Więc spróbowałem z wyrażeniem regularnym:

Kod
alert($("#" + newHash.replace(/[\.]/g, "\\\\\.")).html());


i nie działa. Wyrażenie na pewno jest poprawne, zwraca pl-about\\.htm (w przypadku tej akurat podstrony)
everth
A dlaczego nie użyjesz choćby atrybutu rel? Zresztą, skoro chcesz kombinować.
Crozin
Kod
#pl-about.htm
Wybiera elementy o ID "pl-about" i klasie "htm" (oba warunki muszą być spełnione).
Kod
[id='pl-about.htm']
Powinno zadziałać bez problemu.
everth
Heh, Xpath - że też wcześniej nie pomyślałem - tylko dlaczego jQuery rozróżnia zwykły selektor od Xpatha? Bug w silniku jQuery?
erix
Ale to nie jest XPath, tylko zwykły, CSS-owy selektor atrybutu, z tego, co pamiętam. winksmiley.jpg
everth
Jak przejrzałem teraz API to widzę gdzie popełniłem błąd. Rzeczywiście to nie Xpath (usunęli go w bodajże 1.3) tylko składniowo zbliżony zapis. Niemniej ja dalej uznaję to za prawie Xpath - bez znacznika atrybutu działa prawie tak samo.

Pytanie jednak dalej stoi otwarte - dlaczego skoro zapisy selektorów są równoważne to jeden działa, a drugi nie?

@DOWN: biggrin.gif, starzeję się. Niektóre rzeczy są zbyt oczywiste by o nich myśleć.
Crozin
Bo nie używa się kropek jako części ID, a taka forma forma zapisu (po kropce klasa) jest bardzo wygodna.
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.