Ajaxovy odkaz vytvoreny javascriptem uz neni ajaxovy

sevca79
Člen | 55
+
0
-

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
+
+1
-

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
+
0
-

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
+
+1
-

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
+
+1
-

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});
    });
sevca79
Člen | 55
+
0
-

super díky..funguje jak má ;)