Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] html()/append()/etc - Jak sprawdzić czy już dodane
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
starach
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?
wookieb
A jak wczytujesz dany element?
starach
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.
askone
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
mortus
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.
askone
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 smile.gif
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.