Door
Jeffrey Arts
op 21-08-2013 15:25
gewijzigd op 21-08-2013 15:25
1.125 views
Hallo,
Ik kom er niet helemaal uit met een jQuery functie die ik aan het bouwen ben. Ik begrijp globaal wat het probleem is. Maar niet precies.
Ik creeer een nieuw HTML element via AJAX, een "select" element.
En zodra dit element is aangemaakt werkt mijn standaard jQuery event handler niet op dit element;
Ik begreep dat het te maken heeft met de DOM, het html element bestaat wel maar er bestaat geen DOM van dit element? De event handler wordt namelijk nu alleen getriggered wanneer de pagina geladen is, zodra er nieuwe wijzigingen op de pagina mbt DOM gedaan worden, levert dit problemen als het mijne op. Alleen, hoe los ik dit op?
Links met informatie over DOM en/of DOM icm jQuery zijn overigens ook van harte welkom!
Moet ik mijn huidige event handler vervangen worden door de on() ?
Of moet ik deze naast mekaar gebruiken. En maakt het nog uit of ik dit in een extern .js bestand zet of dat ik het in mijn html zet?
Moet ik mijn huidige event handler vervangen worden door de on() ?
Ja, best vervangen.
Jeffrey Arts op 21/08/2013 15:56:05
En maakt het nog uit of ik dit in een extern .js bestand zet
Zoveel zal dat niet uitmaken, denk ik. (iemand hier een andere mening over?)
Het lijkt me wel properder om het in een bestand te steken, eens alles getest is, alles werkt en de site online is.
Krijg het nog niet voor mekaar met je hulp, ik heb de event handler erin gezet. Correct neem ik aan, aangezien het werkt voordat mijn input vervangen wordt. Na het vervangen van de input werkt het echter niet meer.
Het input veld wordt op de volgende manier aangepast.
$.post($what, { ajax: [$data]} , function($rslt) {
if ($rslt) {
$(".result_frame").html($rslt);
var $categories = $(".move_to_categories").html();
$(".move_to_categories").remove();
$("select[name='categories']").parent().html($categories);
}
});
Dit haalt een pagina op, op basis van de geposte gegevens. De class 'move_to_categories' is een span met hierin de selectbox. Deze html code wordt vervolgens opgeslagen in een variabele en daarna verwijderd (om te voorkomen dat de input er dubbel op staat). Daarna wordt deze op de plek gezet waar eerst de selectbox stond "select[name='categories']"