Ajaxovy odkaz vytvoreny javascriptem uz neni ajaxovy
- sevca79
- Člen | 55
Ahoj,
sem začátečník s ajaxem a prosím o pomoc
když vytvořím odkaz normálně v šabloně, tak potom v handleru mi
presenter vrátí $this->isAjax(); true
napr. neco jako
<div id="testdiv">
divik
<a class="ajax" href="{plink linkpryc!}">odkaz</a>
</div>
avšak když ten odkaz vytvořím javascriptem a dám ho nad nějakou událost, tak mi poté presenter u handleru vrátí $this->isAjax(); false :(
<script>
function showA() {
var div=document.getElementById("testdiv");
var a=document.createElement("a");
a.className="ajax";
a.setAttribute("href", {plink linkpryc!});
a.textContent="odkaz";
div.appendChild(a);
}
<div id="testdiv" onmouseover="showA();">
divik
</div>
prosím co mám kde navíc ještě přidělat..asi to bude nějaká drobnost, avšak já vůbec ajaxu nerozumím
děkuji za každou radu ;)
- Ondřej Kubíček
- Člen | 494
někde určitě voláš $.nette.init()
že? to zajistí že
prvky s třídou ajax se provedou ajaxem, ale ty když vytvoříš odkaz až za
běhu, není na tom navěšena ta událost
proč potřebuješ odkaz vytvářet až pak? musel by sis na to sám navěsit
událost a volat $.nette.ajax()
- sevca79
- Člen | 55
super díky…avšak…
udělal sem něco jako
$('body').on('click', '.vytvorenylink', function (e) {
var href=e.currentTarget.getAttribute("href");
$.nette.ajax({url: href});
});
avšak to mi volá na daný handler dvakrát..jednou ajaxově přes tadyto a podruhý neajaxově z vytvořeného odkazu viz výše…jde nějak to druhý volání zakázat?? nebo mám prostě do atributu href dát „#“ a daný handler předávat např. nějaký vlastní atribut..např. data-href? je toto správné řešení??
vytvářím vlastní odkazy javascriptem protože mám na stránce třeba 1000 snippetů a v každým z nich jsou nějaký odkazy…ovšem potřebuji, když redrawuju nějaký jeden snippet, tak se mi v každým z těch dalších 1000 snippetů některé odkazy změní..takže abych nemusel redrawovat všechny snippety, tak změním jen jeden snippet s datama a pak vytvářím jednotlivé odkazy v těch snippetech dynamicky
Editoval sevca79 (9. 2. 2018 15:31)
- Ondřej Kubíček
- Člen | 494
dej hned na začátek te anonymní funkce e.preventDefault()
navíc ten href bereš zbytečně složitě, ti stačí
var href = $(this).attr("href")
- rkor
- Člen | 62
Mělo by stačit přidat preventDefault()
$('body').on('click', '.vytvorenylink', function (e) {
var href=e.currentTarget.getAttribute("href");
e.preventDefault();
$.nette.ajax({url: href});
});