• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JQ - eventy a AJAX

VPS Starter Arubacloud
0 głosów
198 wizyt
pytanie zadane 8 grudnia 2016 w JavaScript przez hoktaur Pasjonat (22,250 p.)
Witam

Mam pytanie jak powinno się poprawnie zrobić obsługę eventów w JS czy JQ (ze wskazaniem na to drugie) z dynamicznie zmieniającą się stroną obecnie:

- doczytuje poszczególne 'pod bloki' AJAX'em $.post() lub $().load() i wszystko ładnie się doczytuje

- kasuje $().remove()

- event wplatam sobie w kod HTML przez JS onclick, onmousedown itp. i wsio ładnie działa

ale wolałbym wykorzystać $().on()    $().click() itp. i nie wpisywać tego do kodu HTML

tylko że jak tak zrobię to nie działa do doczytanego nowego bloku kodu pewnie jak bym dany event odświeżył za każdym razem po doczytaniu to by zadziało, ale jest może inny sposób????

1 odpowiedź

0 głosów
odpowiedź 8 grudnia 2016 przez Fenix Nałogowiec (26,750 p.)
wybrane 12 grudnia 2016 przez hoktaur
 
Najlepsza
Jeśli chcesz to robić przez JQuery użyj $(selektor).live("nazwaEventu",funkcja);
komentarz 8 grudnia 2016 przez hoktaur Pasjonat (22,250 p.)
edycja 8 grudnia 2016 przez ScriptyChris

Thx za odpowiedz, tylko że: 

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().

As of jQuery 3.0, .delegate() has been deprecated. It was superseded by the .on() method since jQuery 1.7, so its use was already discouraged.

Może jakieś inny pomysł? 

komentarz 8 grudnia 2016 przez Fenix Nałogowiec (26,750 p.)
$(document).on('evenet', 'selector',funkcja);
komentarz 8 grudnia 2016 przez hoktaur Pasjonat (22,250 p.)
edycja 8 grudnia 2016 przez hoktaur

tak tylko na początku mam:

<html>
<head>
</head>
<body>

  <script>
    $("div").on("click", function(){
      alert("The div was clicked.");
    });
  </script>
</body>
</html>

potem doczytuje np. load

$('body').load();

blok kodu

<div>0</div>

i próbuje kliknąć w 0 i nic się nie dzieje przypuszczam dlatego że

$("div").on("click", function(){ alert("The div was clicked."); });

został wykonany ale nie znalazł wtedy jeszcze żadnego div'a więc za każdym razem jak coś doczytam pewnie powinienem wykonywać ten kawałek kodu, ale czuje że to jest 'złe' wink(miałem inne słowo na myśli ale nie wypada) więc spróbuje się dopytać czy jest możliwości zrobić to poprawnie

Popraw mnie jeśli błądzę...

komentarz 8 grudnia 2016 przez Fenix Nałogowiec (26,750 p.)
$(document).on("click","div",function() {});

 

2 argument jako podajesz w on jeśli chcesz aby działał jak live,  nie jest funkcja tylko selektor css w Twoim wypadku to element div.

 

W pure JS możesz złapać rodzica i sprawdzać event.target np.
komentarz 12 grudnia 2016 przez hoktaur Pasjonat (22,250 p.)

Działa jak mu przykazali ...smiley

Podobne pytania

0 głosów
1 odpowiedź 217 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)
0 głosów
2 odpowiedzi 154 wizyt
pytanie zadane 10 października 2015 w JavaScript przez makoso Mądrala (7,380 p.)
0 głosów
2 odpowiedzi 271 wizyt
pytanie zadane 14 września 2015 w JavaScript przez makoso Mądrala (7,380 p.)

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...