Změna textu po ajaxovem pozadavku
- VaKvas
- Začátečník | 111
Zdravim,
pouzivam toto
$('a.ajaxD').live('click', function(event){
var $li = $(this).closest('li');
$.get(this.href);
$("#ajax-spinner").show().css({
position: "absolute",
left: event.pageX - 10,
top: event.pageY - 10
}).ajaxStop(function() {
$(this).hide();
$li.slideUp();
});
return false;
});
ovsem ja potrebuji aby misto zmizeni <li> po kliknuti se me zmenila hodnota textu v nejblizsim <td> a to ANO na NE a obracene..
Zkousel jsem toto resit pres snippet, ale to bohuzel nejde, musel bych mit ve snipetu celou sablonu a to pak postrada vyznam… Jedna se o velkou tabulku kde je tlacitko na zmenu stavu.
Predem diky.. a omlouvam se blby dotaz, ale javascript moc neumim a zadny vzor na toto jsem nenasel..
Diky !
- ic
- Člen | 430
Jsou k tomu potřeba nějaká data dynamicky načítána ze serveru?
Protože jestli to chápu správně tak změna ‚ANO na NE a obracene‘ by se
dala udělat jen jednoduchým scriptem u klienta. Ale teda přijde mi ten
příspěvek takový nejasný, takže tomu možná dost dobře nerozumím.
Pokud bych ale viděl i relevantní část HTML tak bych to udělal hned.
- VaKvas
- Začátečník | 111
Mam tam jQuery tlacitko :
<td>
<a href="{link paid!, 'id'=>$invoicesr->id, 'val'=>$invoicesr->paid}" class="ajaxP tt" title="Změnit"><div id="paid-{$invoicesr->id}" class="ui-state-default ui-corner-all ui-one-icon"><span class="ui-icon ui-icon-transferthick-e-w"></span>{$invoicesr->paid|bool}</div></a>
</td>
to
{$invoicesr->paid|bool}
Vrati ANO nebo NE
Handle na zmenu pres ajax me funguje, pokdu stranku refreshnu, tak se samozrejme zmeni ANO/NE.
Potrebuji tedy jen, aby se mu to po kliknuti zmenilo, aby vedel, ze se neco
stalo …
Asi to klidne muzu udelat i tim, ze zmenim ten
span class="ui-icon ui-icon-transferthick-e-w"
na jiny.. ale u toho spanu to neni tak jednoduche.
Nehlede na fakt, za kazda radka bezi v cyklu a tedy nejde zmenit jen class, protoze tam je nekolikrat a proto asi bude nutne pouzit nejake „closest()“ jako to mam v tom vzoru..
Moc diky !!
- ic
- Člen | 430
co jednoduše takovouhle podmínku:
if(document.getElementById('paid-{$invoicesr->id}').childNodes[1].data == 'ANO') ...
umístit pod příkaz, nebo třeba po načtení celé stránky…
jestli je těch id-ček hodně šlo by je vkládat do pole a takovouhle
podmínku potom udělat v cyklu a měnit ty hodnoty v <td> nebo co to
má dělat.
- VaKvas
- Začátečník | 111
Tak jsem to zkusl vyresit takto :
<a onclick="f{$invoicesr->id}()" href="{link paid!, 'id'=>$invoicesr->id, 'val'=>$invoicesr->paid}" class="ajaxP tt" title="Změnit"><div id="paid-{$invoicesr->id}" class="ui-state-default ui-corner-all ui-one-icon"><span class="ui-icon ui-icon-transferthick-e-w"></span>{$invoicesr->paid|bool}</div></a>
<script type="text/javascript">
function f{$invoicesr->id}() {
if(document.getElementById('paid-{$invoicesr->id}').childNodes[1].data == 'ANO')
document.getElementById('paid-{$invoicesr->id}').childNodes[1].data = 'NE';
else document.getElementById('paid-{$invoicesr->id}').childNodes[1].data = 'ANO';
}
</script>
Myslis, ze to je ok ? Je to cele v cyklu a tak jsem asi takto musel.. nebo by byla jednodussi moznost? Takto se me funkce tam vytvori tolikrat, kolik je cyklu …
Editoval VaKvas (15. 7. 2011 13:02)