• 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
158 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ź 206 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)
0 głosów
2 odpowiedzi 129 wizyt
pytanie zadane 10 października 2015 w JavaScript przez makoso Mądrala (7,380 p.)
0 głosów
2 odpowiedzi 235 wizyt
pytanie zadane 14 września 2015 w JavaScript przez makoso Mądrala (7,380 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...