Autor Zpráva
pmasarik
Profil
Nazdar,

Mám v tabulke link ktorý po kliknutí zmení hodnotu v DB a vráti nový link ktorý má opačnú hodnotu (ano/nie) ale po kliknuti na ten nový link to už nefunguje.

Prvý link, po kliknutí sa zmení záznam v DB a vráti nový opačný link.
<td><a id="11|ano" class="zmenit" href="?edit&amp;zobrazit=11|ano">ano</a></td>


$('a.zmenit').click(function(e) {
		e.preventDefault(); // toto neviem co robi, mozno bude chyba v tom, ale nikde som nenasiel poriadne vysvetlenie, jasne ze som to obkukal s ineho prikladu
		var parent = $(this).parent();
		$.ajax({
			type: 'get',
			url: 'ajax-zobrazit.php',
			data: 'ajax=1&zobrazit=' + $(this).attr('id'),
      success: function(data) {
  				parent.html(data);
      }
		});
	});


Druhý vrátený link, po kliknutí sa už neaplikuje JS funkcia a ja neviem prečo...
<td><a id="11|nie" class="zmenit" href="?edit&amp;zobrazit=11|nie">nie</a></td>


Nevie mi niekto prosím vysvetliť kde robím chybu?
Nox
Profil
No měníš celé html, tak je možný že se s tím smaže i navázaná událost, zkus místo html jen změnit href a text
pmasarik
Profil
S jquery ešte len začínam, preto ak by si mohol poradiť pomocou príkladu bol by som rád.

Už som skúsil nahradiť toto
parent.html(data);

týmto, ale bez úspechu.
$('a.zmenit').replaceWith(data);


Dá sa ešte nejako inak spracovať výstup?
Prípadne použijem aj iné riešenie ak má niekto nápad ako to urobiť.
Nox
Profil
// ...
success: function(data){
  $(this).attr("href", "...").text("...");
}
pmasarik
Profil
Super dík za radu, už mi to ide...

Ale aj tak by som rád vedel aký je rozdiel medzi tým že zmením len .text() a .attr("href","") a tým že tam vrátim do tej tabulky celý nový link?
Možno je to základná informácia, ktorá sa ale bohužial ťažko hladá na nete ked človek nevie čo má hladať.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: