Nette ajax – můj script funguje jen poprvé

n.u.r.v.
Člen | 485
+
0
-

Ahoj mám tabulku a na konci odkaz na smazání řádku (s class ajax a používám nette.ajax.js).

Dále mám v main.js univerzální metodu pro vypsání confirm dialogu:

$('.show_confirm').click(function (e) {
        if (confirm($(this).data('confirm_text')) == false) {
            e.stopImmediatePropagation();
            return false;
        }
    });

A odkazy pro mazání takto:

<a href="{plink deleteUserListItem! $primary}" class="ttip ajax show_confirm" data-confirm_text='Text pro confirm dialog' ><i class="fa fa-trash"></i></a>

Funguje to dobře – při prvním smazání se objeví confirm a po potvrzení se položka smaže, ale když pak chci hned smazat další položku tak už se nevypíše dialog ale dojde ihned k ajax requestu a ke smazání položky…

Aktuálně mám $.nette.init(); a můj script obalený snippetem který při mazání překresluji..

Co s tím? díky

Editoval n.u.r.v. (4. 10. 2017 10:26)

Martk
Člen | 652
+
0
-

Zkusil bych toto, jestli pomůže:

$('body').on('click', '.show_confirm', function (e) {
	...
});
n.u.r.v.
Člen | 485
+
0
-

@Martk když dám ‚body‘ nebo document, tak tu nefunguje vůbec – ani poprvé (po smazání class ajax funguje)…

Ot@s
Backer | 476
+
0
-

Problém bude v tom, že první požadavek Ti vrací snippet aktualizovanou tabulkou. To má za následek, že máš resetované ono konfirmování, viz. kontrukce $('.show_confirm').click(...). Potřebuješ po překreslení snippetu znovu spustit definici výše uvedeného JS. Podívej se do extensions nette.ajax a napiš si obsluhu události success (aby se pokaždém úspěšném ajax requestu provedlo volání $('.show_confirm').click(...)). Možná už to někdo řešil i ve fóru.

n.u.r.v.
Člen | 485
+
0
-

@Ot@s Díky, vypadá to že to funguje, ještě to otestuju

n.u.r.v.
Člen | 485
+
0
-

Ahoj, tak jsem teď zjistil že to funguje jen částečně – sice už se zobrazí confirm dialog vždy, ale funguje jen při prvním kliknutí – jakmile se provede jeden ajaxový požadavek, tak když kliknu znova na ikonu mazání dalšího řádku, tak i když pak v zobrazeném dialogu dám zrušit, tak se ajax provede a řádek smaže…

n.u.r.v.
Člen | 485
+
0
-

ahoj, tak se zeptám jinak – jelikož metoda pro zobrazení confirm dialogu se provede, ale e.stopImmediatePropagation();return false; nemá žádný vliv, tak jak zastavit script aby se neprovedl ajaxový požadavek? Díky

johnnie
Člen | 54
+
+1
-

Asi neodpoviem na tvoju otazku ale mozno ti to pomoze :)

ja pouzivam confirm.ajax.js a funguje to bez problemov

n.u.r.v.
Člen | 485
+
0
-

@johnnie Díky moc – ono to funguje, takže asi vyřešeno…