Jak inicializovat odkaz s třidou ajax, který je vložený po úspěšném vykonáním ajaxu. (nette.ajax.js)
- Adaimont
- Člen | 3
Ahoj, mohl bych Vás poprosit o radu? Mám odkaz se třídou ajax. Pokud na něj kliknu vloží se mně pod tento odkaz podkategorie, které jsou odkazy, které mají také třídu ajax. Nicméně na tyto odkazy nejdou navázané event handlery. Takže pokud na ně kliknu, dojde k přesměrování. Já bych potřeboval, aby se chovaly stejně jako odkazy které se načtou s prvním zobrazením stránky. Tj. jak prosím mohu inicializovat nově vložený obsah? Předem děkuji za jakoukoli odpověď.
Nevyužívám snippety. Nový obsah vkládám na základě id kategorie, pod tuto kategorii.
Pokud bude potřeba kód, rád ho vložím, nicméně to možná nebude potřeba?
- Ondřej Kubíček
- Člen | 494
tohle ale nemá nic společného s nette
předpokládám, že používáš jquery?
po přidání elementu do domu nefunguje klasické bindování, je potřeba
to bindovat přes on
$("body").on("click", "a.ajax", function() {
console.log('fired!');
});
- Ondřej Kubíček
- Člen | 494
sry ted si čtu nadpis, takže používáš nette.ajax.js :D
zkusil bych v success toho volání prvního ajaxu znovu initnout
nette.ajax.js
- Adaimont
- Člen | 3
Parada funguje, pridavam kod. Dekuju za radu.
<script>
$.nette.ext({
success: function (payload, status, jqXHR) {
if ($( '#' + payload.idCategorySelector ).data('level') == 0) {
$level = $( '#' + payload.idCategorySelector ).data('level') + 1;
} else {
$level = $( '#' + payload.idCategorySelector ).parent().parent().data('level') + 1;
}
$padding = 10 * Math.log(3 + $level) - 10;
$( '<div data-level="' + $level + '" style="margin-left:' + $padding + 'ex">' + payload.categories + '</div>' ).insertAfter( '#' + payload.idCategorySelector );
$.nette.load();
}
});
</script>