Autor | Zpráva | ||
---|---|---|---|
visionic Profil * |
#1 · Zasláno: 8. 5. 2016, 20:17:58
Dobrý den, jsem ještě v jquery trochu neznalý, ale nevím si rady s tímto:
Mám #superform a ke stávajícímu html chci přidat další pomocí click #plus. $("#plus").click(function(){ var oldhtml = $("#superform").html(); var nevhtml = oldhtml + "<span>Test</span>"; $('#superform').html(nevhtml); }); Tahle část funguje a nastáva zde problém. Teď bych chtěl něco odebrat. Dvakrat jsem kliknul na plus (mam tedy): <span>Test</span> <span>Test</span> po kliknuti na minus bych chtel aby mi zbyl jen jeden: <span>Test</span> Bohužel naivně jsem si myslel, že bude fungovat toto: $("#minus").click(function(){ var oldhtml = $("#superform").html(); var nevhtml = oldhtml - "<span>Test</span>"; $('#superform').html(nevhtml); }); Tohle mi, ale odstraní celý kód v #superform Prosím o radu. |
||
Chamurappi Profil |
#2 · Zasláno: 8. 5. 2016, 22:21:44
Reaguji na visionice:
„Tahle část funguje“ Nemusí. Pokud ve formuláři budeš mít třeba upload souboru, tak ti uvedený kód zruší aktuální hodnotu. Převádíš DOM na HTML kód – což je ztrátový převod – a následně zpětně doplněný HTML kód na DOM. „Bohužel naivně jsem si myslel, že bude fungovat toto“ Odčítání řetězců v drtivé většině jazyků neexistuje. Krom toho při převodu DOMu na HTML nemusí to HTML vypadat přesně tak, jak si představuješ (značky napsané malými písmeny apod.), takže i kdyby odčítání fungovalo, nebyl by výsledek spolehlivý. Já bych postupoval (samozřejmě bez jQuery) tak, že bych si při načítání stránky uložil klon přidávané věci (rozhodně ne její HTML, ale přímo cloneNode(true) ) do nějaké proměnné a při kliknutí na plus bych přidával appendChild em klony tohoto klonu do rodiče přidávaných věcí. Zároveň bych si je ukládal do pole (push em na konec), abych při kliku na mínus mohl vytáhnout poslední položku (pop em) a tu odstranit z rodiče přidávaných věcí metodou removeChild .
Možná jsem si ale k zadání domyslel něco, co v něm není. Popsal jsi celkem vágně, o co se snažíš, pochybuji, že cílem je přidávat jen texty ve <span> ech…
|
||
visionic Profil * |
Chamurappi:
„o co se snažíš, pochybuji, že cílem je přidávat jen texty“ Samozřejmě nejde pouze o texty. Tohle řešení jsem tedy zamítnul. Zkouším tedy ajaxem poslat for cyklus. Priklad jsem napsal strucne, takze samozřejmě je obohacen a dolazen lepe, pokud neni GET urcen nebo je mensi nez 1, tak hodnota je 1 a atd. Tedy php $zobraz = $_GET['test']; $plus = $zobraz+1; for ($cislo = 0; $cislo < $zobraz; $cislo++) { html kod } echo '<a id="plus" title="'.$plus.'">+</a>'; js $("#plus").click(function(){ var hodnota = $( "#plus" ).attr( "title" ); $.get("index.php", { test: hodnota } ); }); Ale nechce mi to ten GET zobrazovat. Mam takovy pocit, ze mi tam ale neco chybi, nebo to tak jednoduche nebude. Jinak kdyz jsem vymenil $.get("index.php", { test: hodnota } ); za alert("Soubor vrátil: " + hodnota);
Tak to opravdu vrací správnou hodnotu. |
||
Časová prodleva: 9 let
|
0