Zamezení odchycení událostí v jquery po překreslení snippetu
- Ondrys
- Člen | 3
Zdravím,
chtěl jsem požádat o osvětlení někoho znalého:
- mám tabulku dat, která má na konci tlačítko, obalené <a class=„ajax“> pro další překreslení jiného snippetu
- v jquery je definována obslužná fce po kliknutí na tlačítko
to fungovalo dokud:
- tabulka je samostatný snippet (funkce záložek)
- po překresleni snippetu záložek (včetně tlačítek) přestanou reagovat všechny obslužné akce z jquery
Prvotně jsem se bál, že jsem porušil bind po ajax překresleni snippetu, ale došel jsem k zjištění:
Když překreslím snippet záložek, tak všechny události objektů uvnitř
<a class=„ajax“> jsou odchyceny a já nevím jak tetno stav
změnit.
Po odstranění třídy ajax je vše funkční, ale to by znamenalo, že handle
volaný tlačítkem (odkazovaný v <a class=„ajax“>) musim volat spolu
s obslužnými funkcemi v jQuery přes ajax?
Předem děkuji za korekci a případná doporučení co dělam špatně…
- Ondrys
- Člen | 3
Čamo napsal(a):
Dynamicky generované elementy, musia mať obsluhu udalosti naviazanu cez metodu delegate naviazanu na kontainer.
Můžeš to prosím tě nějak specifikovat víc? Jelikož v jQ používám v tuto chvílí $(document).on… a delgate je vpodstatě stejný princip, jen nerozumím jak to myslíš s tím konteinerem (jakým?)..
Moc dík
- Ondrys
- Člen | 3
Snad tedy kód osvětloi to co jsem se snažil popsat :-)
Zjednodušený příklad template:
<div n:snippet="output" >
Obsah záložky:
<div n:foreach="$ingredientList as $ingred">
Prvek {$ingred->id}
<a n:href="update! 'idI' => $ingred->id" class="ajax">
<button class="info">info</button>
</a>
</div>
</div>
<script>
$(function () {
$.nette.init();
$(document).on('click', 'button', function(e) {
console.log($(this).attr('class'));
});
});
</script>
V presenteru zejišťuji překreslení záložky (plně funkční):
public function handleChangeTab($idT)
{
$this->tables = $idT;
$this->redrawControl('output');
}
Ale po překreslení snippetu se nesplní událost
$(document).on(‚click‘, ‚button‘, function(e).
Proto mě zajíma jestli to je má chyba a někde něco dělám špatně a nebo
tomu nette.ajax sam zabraňuje, protože po odstranění třídy
ajax z <a> výše popsaný problém nevznikne (viz popis na
začátku).
Díky
Editoval Ondrys (27. 4. 2014 14:57)