Autor Zpráva
T-fon
Profil
Ahoj,
na stránce používám 2 jQuery pluginy: DataTables a Confirm. Mám tabulku s položkami z databáze a u každý tlačítko "delete". Vše funguje, pokud položky načtu PHP scriptem do stránky a zobrazím pomocí DataTables.
Udělal jsem ale změnu, že se položky do tabulky načítají pomocí AJAXu a v tu chvíli už plugin Confirm nefunguje.
        $('#datatable').DataTable( { 
            "processing": true,
            "serverSide": true,
            "ajax":{
                "url": "datatables.php",
                "type": "POST", 
            }
        });
        
        $(".simpleConfirm").confirm({
            confirmButton: "Smazat",
            cancelButton: "Zrušit",
            confirmButtonClass: "btn-danger"
        });
Třídu simpleConfirm také načítám pomocí AJAXu. Poradíte mi, jak bych tento problém mohli vyřešit?
T-fon
Profil
Napsal jsem zbytečně složitý příklad. Zkusím zjednodušit:
Mám na stránce tlačítko s třídou .simpleConfirm a v JS událost na kliknutí.
<button class="simpleConfirm">klik</button>
$('.simpleConfirm').click(function() {
  alert('ahoj');
})
Ale pokud to tlačítko načtu pomocí AJAXu jiným JS scriptem, už tato událost neproběhne. Předpokládám, že jde o nějakou triviálnost např. kam script umístit a v jakém pořadí, ale sám si s tím nedokážu poradit.
Keeehi
Profil
Řeší se tu furt dokola.
Ve výsledku z $.post nelze použít jquery události
To první je delegace eventu z rodiče který je v kódu od začátku na dynamicky načítaného potomka.
To druhé je napojení eventů na nové, dynamicky načtené elementy.
T-fon
Profil
Děkuji.
Potřeboval bych použít tu první možnost s rodičem. Kdybych to takhle použil na plugin Confirm, tak musím kliknout 2x. Takže jsem vymyslel tohle:
        $("#datatable").on("mouseover", ".simpleConfirm", function() {
            $(".simpleConfirm").confirm({
                confirmButton: "Smazat",
                cancelButton: "Zrušit"
            }); 
        });
Funguje to, ale je to asi prasárna, co? Jde to vyřešit elegantněji?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: