Změna textu po ajaxovem pozadavku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
VaKvas
Začátečník | 111
+
0
-

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

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

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

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

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)