Wpis z mikrobloga

Witajcie mirki z #webdev
Zazwyczaj grzebię w #php, a w #javascript i #jquery robię tylko proste rzeczy. Jednak teraz w projekcie mam taką sytuację, że muszę zrobić w #js coś bardziej złożonego.
Otóż mam taką sytuację, że na stronie mam głosowanie. Można oddać głos na produkt lub użytkownika. Po prostu użytkownik klika na przycisk i leci zapytanie do bazy danych. Głosować można na 2 sposoby:
1. Od razu na stronie
2. W otwartym lightbox (zawartość lightbox jest ładowania dynamicznie z #ajax)
Ponadto na stronie mam przyciski share facebooka i twittera, które tak samo jak głosowanie są:
1. ładowane od razu se stroną
2. ładowane w lightbox
Mam też możliwość zapisania się do newslettera (znowu używam ajax), ale też mogę zapisać się do newslettera po oddaniu głosu w lighbox.

Otóż sytuacja jest taka, że jak naprawię coś w jednym miejscu, to wykrzacza mi się w drugim, naprawię w drugim miejscu, to wykrzacza się w trzecim itd. w kółko.

Może mi ktoś poradzić w jaki sposób mam zrobić by:
1. Event na elemencie działał w lightbox.
2. Eventy nie dublowały się po otwarciu lightbox.

Może być jakiś tutorial z przykładami lub wystarczy rada w jaki sposób mam to napisać, aby działało poprawnie.
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@anghelus: Wrzuciłem moje pliki na gista: https://gist.github.com/miedzwin/ffe932a21813d4b350a3b1a480897caf
@isamaul: Niespecjalnie lubię pracę przy JS, ponieważ trudniej jest mi debugować kod i nie wszystko jest jawne. Po prostu wiem, że jeżeli ładuję HTML dynamicznie, to później muszę jakoś zainicjować eventy, na dynamicznie załadowanym HTMLu.
W każdym razie poczytam o delegacji eventów, może to akurat to co szukam.
  • Odpowiedz
@anghelus: Z duplikowaniem się requestów poradziłęm tak, że wywaliłem z kodu init_vote(), w którejś z funkcji przez co request wykonuje się tylko raz. Przeczytałem, też o delegacji eventów, o czym pisał @isamaul i wydaje mi się, że to może mi pomóc. Wystarczy tylko używać takich samych klas e elementach, abym nie musiał inicjować JSa po dynamicznym załadowaniu elementów.
O ten artykuł przeczytałem.
  • Odpowiedz