Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wykonanie JS na elementach pobranych z AJAXA
reyne
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Witam, przypuśćmy mam plik ladowarka.php, w którym mam kod JavaScript i ładuję sobie nim zawartość (dla przykładu blok <div id="tekst">jakis tekst</div>) do diva z pliku dane.php (za pomocą JQUERY).
Jak operować teraz na załadowanym bloku? Bo kod JS, który mam w pliku ladowarka.php, jakby nie widzi tego elementu pobranego dynamicznie, jednym z rozwiązań jest umieszczenie tego kodu też w pliku dane.php, wtedy wszystko działa.
Pytanie: czy trzeba zawsze dołączać kod JS do pliku pobieranego ajaxem?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




MOze uraczylbys nas kodem jaki masz bysmy wiedzieli o czym konkretnie mowisz.
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


http://api.jquery.com/on/ (wcześniej live)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To zalezy co robi, dlatego prosilem o kod. Live (on) to jedno z kilku rozwiazan
Go to the top of the page
+Quote Post
celbarowicz
post
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


W ładowarce umieść : <script type="text/javascript" src="tutaj_wszystkie_funkcje.js"></script>.
U mnie takie coś działa na każdym wklejanym pliku.
Go to the top of the page
+Quote Post
reyne
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


kod jest zbyt skomplikowany i dużo plików musiałbym dołączać (IMG:style_emoticons/default/tongue.gif) , chodzi ogólnie o zasadę jak powinno się to robić, zwykle robię to właśnie tak, że dołączam bibliotekę jquery (wraz ze skryptem js) zarówno do "ladowarki" jak i pliku, który jest ładowany, wtedy nie ma problemu.. tylko czy np dołączanie kodu i w ładowarce i w pliku nie opóźnia działania strony?

Ten post edytował reyne 1.09.2013, 10:33:05
Go to the top of the page
+Quote Post
markonix
post
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


No jest to bezsensu, zgadza się.

Spróbowałeś mojej metody?
Go to the top of the page
+Quote Post
reyne
post
Post #8





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


No właśnie nie wiem zbytnio jak się za to zabrać, dlatego na potrzeby stworzyłem prosty skrypt, który pobiera button z pliku zewnętrznego ajaxem. Po kliknięciu buttona powinna wyświetlić się wiadomość. Wyświetla się dopiero jeżeli dołącze JS i JQUERY także do pliku pobieranego.

plik index.php

  1. <?php
  2.  
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Ładowarka</title>
  8. </head>
  9. <body>
  10. <script src="js/jquery-1.9.1.min.js"></script>
  11. <script src="js/laduj.js"></script>
  12.  
  13. <button id="zaladuj-plik">Załaduj plik</button>
  14.  
  15. <div id="content"></div>
  16.  
  17. </body>
  18. </html>
  19. ';
  20. ?>
  21.  


plik laduj.js

  1. $(document).ready(function() {
  2.  
  3. $("#zaladuj-plik").click(function() {
  4. $.ajax({
  5. type: "GET",
  6. url: "dane.php",
  7. beforeSend: function(html){
  8. $("#content").html("Czekaj..");
  9. },
  10. success: function(data){
  11. $("#content").html(data);
  12. }
  13. });
  14. });
  15.  
  16. $("#wyswietl-wiadomosc").click(function() {
  17. alert('wiadomosc');
  18. });
  19.  
  20. });
  21.  


plik dane.php

  1. <?php
  2.  
  3. /* Jeśli dodam te pliki, skrypt działa
  4. echo '
  5. <script src="js/jquery-1.9.1.min.js"></script>
  6. <script src="js/laduj.js"></script>
  7. ';
  8. */
  9.  
  10. roznorodne dane ;)
  11. <button id="wyswietl-wiadomosc">Wyświetl wiadomość</button>
  12. ';
  13. ?>


Jak się do tego .on() będzie mieć?

Ok działa (IMG:style_emoticons/default/tongue.gif)

ROZWIĄZANIE:

zdarzenie
  1. $("#wyswietl-wiadomosc").click(function() {
  2. alert('wiadomosc');
  3. });


trzeba zmienić na

  1. $('#content').on('click', '#wyswietl-wiadomosc', function (){
  2. alert('wiadomosc');
  3. });


Dzięki za podpowiedź (IMG:style_emoticons/default/smile.gif)

Ten post edytował reyne 1.09.2013, 12:22:12
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


No dobrze, ale ja tu nigdzie nie widzę zastosowanego on.
Domyślnie jQuery działa na załadowanym DOM w momencie otwarcia strony, powyższe zmienia to zachowanie działając także na dynamicznie dodanych danych.

http://stackoverflow.com/questions/1359018...c-html-elements

Ten post edytował markonix 1.09.2013, 11:46:50
Go to the top of the page
+Quote Post
reyne
post
Post #10





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Akurat się minęliśmy z odpowiedzią .on() załatwia sprawę (IMG:style_emoticons/default/tongue.gif) powyżej zamieściłem rozwiązanie, że też wcześniej tego nie używałem, za każdym razem dodawałem js w każdym pliku (IMG:style_emoticons/default/wink.gif) Dzięki!
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.08.2025 - 23:47