2010-11-19 15 views
22

Używam .load() do przeciągania statycznych plików HTML na moją główną stronę HTML. Skrypty i selektory, które napisałem, istnieją w:Uruchamianie skryptów JQuery na załadowanych treściach AJAX

$(document).ready(function(){}); 

Ale nie działają na załadowanej zawartości AJAX. Przeczytałem, że dzieje się tak dlatego, że selektory, których używam, nie są dostępne.

Czy jest lepszy sposób to zrobić? Dodawanie skryptu do funkcji window.load nie działa albo:

$(window).load(function() {}); 
+0

Wystarczy, aby potwierdzić swoje $ (document) .jeśli funkcje nie są wykonywane w pliku .html ładowanym do strony wzorcowej? lub $ (dokument) .ready nie lokalizuje elementów ładowanych przez AJAX? – WiseGuyEh

+0

Ten ostatni. W załadowanym pliku .html nie ma $ (dokument). Czy powinno być? – mmcglynn

Odpowiedz

65
$(document).ajaxComplete(function(){ 
    // fire when any Ajax requests complete 
}) 

ajaxComplete()

+1

Dziękuję Jman, to świetnie! – mmcglynn

+1

dziękuję bardzo! Przez pół dnia wpadałem na to w błaganie i teraz mogę przejść do mojego kodu: D – justinl

+1

Ale to zadziała po każdym wywołaniu AJAX ... co może wpłynąć na wydajność, prawda? Czy istnieje sposób ręcznego wyzwalania jquery? – Bryce

3

Istnieje więcej niż jedna opcja:

  1. można dodawać skrypty inicjalizacji [$(this).click...] do callback funkcji $.load()
  2. można użyć $.live(), która tworzy procedury obsługi nawet dla dynamicznie ładowanych/tworzonych obiektów.

Więcej tutaj:
zwrotna: http://api.jquery.com/load/ (zauważ funkcję "complete()")
wiążą: http://api.jquery.com/live/

Edit: Moim błędem było live() nie bind(), dziękuję chłopaki

+0

Myślałem, że to '$ .live()' dla dynamicznie tworzonych obiektów. http://api.jquery.com/live/ –

+0

Myślę, że masz na myśli funkcję 'live', która jest odpowiednikiem bind, ale działa dla dynamicznie tworzonych elementów. – Tesserex

1

Można powiązać zdarzenia z dynamicznie ładowaną treścią za pośrednictwem jQuery's $.live().

Od jQuery http://api.jquery.com/live/:

Dołącz do obsługi zdarzenia dla wszystkich elementów, które pasują do aktualnego wyboru, teraz iw przyszłości.

0

jQuery load pobiera opcjonalny callback function argument, który można użyć, aby wykonać dowolną konfigurację potrzebujesz po swojej zawartości ajax-ed załadowanego

Powiązane problemy