Po překreslení nefunguje ajax
- spiider
- Člen | 162
Ahoj, mám seznam výrobců což jsou checky a pod nimi mám seznam produktů kde u každého je také checkbox na který mám navázaný handle který uloží jeho id do session. Po zaškrtnutí checku u výrobce překreslím produkty…to funguje v pořádku, ale po tomto překreslení se mi již nezavolá událost na klik u produktu…před filtrováním podle výrobce, kde mám vypsané všechny produkty vše funguje ok. Zde přikládám kód šablony:
<script>
$(function () {
$(".table tbody input[type=checkbox]").click(function(){
if ($(this).is(':checked')) {
var checked = 1;
}
else {
var checked = 0;
}
$.ajax({
url: {link setCheckboxValue!},
data: {
value: $(this).val(),
checked: checked
}
}).done(function(){
});
});
});
</script>
{snippet blogs}
<table class="table table-hover">
<thead>
<tr>
<th>
Název
</th>
<th>
<span class="line"></span>Popis
</th>
</tr>
</thead>
<tbody>
{if $products}
{foreach $products as $product}
<tr>
<td>
<input type="checkbox" />
{$product->title}
</td>
<td class="description">
{$product->description}
</td>
</tr>
{/foreach}
{else}
<tr>
<td colspan="2">Nenalezeny žádné produkty</td>
</tr>
{/if}
</tbody>
</table>
{/snippet}
Po prekresleni se vubec neprovede js na klik a netusim proc. diky za rady
Editoval spiider (9. 9. 2013 21:59)
- David Matějka
- Moderator | 6445
jelikoz se smazal a znovu pridal prvek, na ktery byla udalost navazana.
moznosti je nekolik – do jquery 1.8 se muze pouzit live
(ale
radsi nepouzivej) nebo muzes po dokonceni requestu udalosti na checkboxy znovu
navazat nebo muzes pouzit on
Editoval matej21 (9. 9. 2013 22:03)
- David Matějka
- Moderator | 6445
zkus
$("body").on("click", ".table tbody input[type=checkbox]", function(){
....
- spiider
- Člen | 162
A jeste jeden dotaz, ty checky mam stylovane pomoci pluginu jquery.uniform.min.js ktery si v sablone take nacitam (mam to v {block js}…{/block})…a po vybrani vyrobce a prekresleni se mi styl z checku u produktu vytrati, takze bych ho potreboval take nejak refreshnout.....davat cely block js do snippetu se mi nechce jelikoz tam toho mam vice…neni nejaka lepsi cesta? Diky
- Vojtěch Dobeš
- Gold Partner | 1316
Použij nette.ajax.js
a věřím, že mnoho tvých problémů se stane minulostí :).
Stačí zaregistrovat kód, který inicializuje
jquery.uniform.js
(resp. jakýkoliv kód, který se binduje na HTML
uvnitř snippetu) do extenze:
$.nette.ext({
load: function () {
// inicializační kód
}
});