Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] html()/append()/etc - Jak sprawdzić czy już dodane
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Hej,

Czasami przy wrzucaniu dużych ilości danych muszę walnąć jakąś funkcję w setTimeout żeby wywołać efekt opóźnionego wykonania operacji. Czy istnieje możliwość sprawdzenia czy dany element został już wczytany? Czy należy robić setTimeout, a w nim warunkiem sprawdzać czy został element załadowany?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A jak wczytujesz dany element?
Go to the top of the page
+Quote Post
starach
post
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Za pomocą html() albo append() lub innych tego typu funkcji w jQuery. Mogę również przy użyciu innej jeśli by to coś miało pomóc.
Go to the top of the page
+Quote Post
askone
post
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


O ile dobrze kojarzę to, jeśli jako element rozumiemy jakikolwiek tag html np div to możesz spróbować go pobrać poprzez $("#id") jeśli zwrócony zostanie obiekt jquery to element już jest jeśli natomiast dostaniesz obiekt pusty to elementu nie ma

Pozdrawiam
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Zapewne można, ale ważne jest to, jaką treść dodajemy. Zaimplementujmy sobie funkcję exists():
[JAVASCRIPT] pobierz, plaintext
  1. function exists(element) {
  2. if($(element).length > 0) return true;
  3. return false;
  4. }
[JAVASCRIPT] pobierz, plaintext

I teraz, jeśli ładujemy/wstawiamy elementy html posiadające własny identyfikator, to nie ma żadnego problemu, wystarczy proste sprawdzenie:
[JAVASCRIPT] pobierz, plaintext
  1. if(!exists("#id_1")) {
  2. // element nie został dodany, bo w DOM nie ma elementu o id równym id_1
  3. }
[JAVASCRIPT] pobierz, plaintext

Problem pojawia się wtedy, jeśli dodajemy tekst, bo wtedy trzeba zadbać o to, żeby tekst miał odpowiednią formę zanim porównamy go z zawartością strony. Tutaj mógłby pomóc selektor :contains():
[JAVASCRIPT] pobierz, plaintext
  1. var selector = "#content:contains('"+text+"')";
  2. if(!exists(selector)) {
  3. // element nie został dodany, bo w elemencie o id content nie ma odpowiedniego tekstu
  4. }
[JAVASCRIPT] pobierz, plaintext

W drugim przypadku można również skorzystać z wyrażeń regularnych lub operacji na łańcuchach znakowych.

@askone To czy dany element istnieje w jQuery możemy sprawdzić tylko za pomocą atrybutu length tego elementu. Z tego co wiem inaczej się nie da, bo jQuery zwraca obiekt jQuery gdy nie może znaleźć określonego przez nas elementu html.
Go to the top of the page
+Quote Post
askone
post
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Cytat(mortus @ 17.08.2011, 10:59:48 ) *
@askone To czy dany element istnieje w jQuery możemy sprawdzić tylko za pomocą atrybutu length tego elementu. Z tego co wiem inaczej się nie da, bo jQuery zwraca obiekt jQuery gdy nie może znaleźć określonego przez nas elementu html.


Faktycznie - coś gdzieś dzwoniło ale do końca nie wiedziałem gdzie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.09.2025 - 03:42