jquery zaznaczenie wierszy pod warunkiem

0

Hej,

mam tabelę a w niej id towaru, kod towaru, nazwę towaru i ilość edytowalną.
Na kliknięcie iteruję po tej tabel. W iteracji ślę posta do skryptu, który zwraca ile danego towaru mam na magazynie.
Jeśli mam mniej to chcę oznaczyć ten wiesz np. na czerwono ( bootstapowo alert alert-danger ).
Skrypt mi działa jeśli tabela ma jeden wiersz. Jeśli są dwa działa błędnie i nie wiem dlaczego.
Dodatkowo jeśli w tabeli poprawie ilość i ponownie kliknę skrypt powinien na nowo sprawdzić i ewentualnie odznaczyć wiersz.
Na logikę skrypt wygląda ok jednak nie działa dobrze
przygotowałem fiddle, razem z postem więc nie zadziała Wam jak należy ale może ktoś od razu zauważy co nie gra?
https://jsfiddle.net/fex8b66c/5/

0

sprecyzuję obecne zachowanie.
powiedzmy, że tabela ma 3 wiersze:
wiersz 1 - stan zwrócony ajaxem jest zbyt mały
wiersz 2 - stan zwrócony ajaxem jest wystarczający
wiersz 3 - stan zwrócony ajaxem jest zbyt mały

rezultat - skrypt oznacza tylko ostatni wiersz. Tak jakby zaznaczał ostatni wiersz który spełnia warunek

wiersz 1 - stan zwrócony ajaxem jest zbyt mały
wiersz 2 - stan zwrócony ajaxem jest zbyt mały
wiersz 3 - stan zwrócony ajaxem jest wystarczający

rezultat - skrypt oznacza tylko ostatni wiersz! bez sensu

1

Dzieje się tak dlatego, ponieważ ajax jest wykonywany asynchronicznie - pętla (each) wykona się 3 razy zanim wróci pierwsza odpowiedź - dlatego $this w metodzie success będzie zawsze zawierać ostatni element.

1

Dodaj var przed $this = $(this), w ten sposób ZADEKLARUJESZ zmienną LOKALNĄ i to rozwiąże problem.
Kiedy robisz tak jak teraz, to tworzy się zmienna globalna, a że ajax jest ze swojej natury asynchroniczny, to wykona się po zakończeniu całej pętli each, a zmienna globalna będzie miała wartość z ostatniej pętli.

0

Jeszcze dodam, że cała koncepcja jest zła. Wysyłanie kilku requestów o taką pierdołę to zbrodnia - skrypt na serwerze powinien przyjmować tablicę argumentów i zwracać tablicę wyników. Jak masz jakiś wpływ na backend to to zmień.

1 użytkowników online, w tym zalogowanych: 0, gości: 1