- Ymox,
Bonjour à tous !
Je cherche aujourd'hui à avoir un script aussi général que possible pour appliquer des changements JavaScript sur des éléments (ajout de WYSIWYG, de sélecteurs de date jQuery UI, etc.).
La partie en AJAX est chargée au clic sur des liens, jusque là, rien de méchant : une classe particulière pour cibler les bons liens, un attribut data-*
pour y mettre un sélecteur qui dit où doit être inséré le retour de l'appel AJAX.
Maintenant, dans ce retour AJAX, j'ai un formulaire, sur lequel j'aimerais ajouter un WYSIWYG sur un textarea et des sélecteurs de date. Evidemment, comme ces éléments ne sont pas directement dans le DOM, $(document).ready(…)
ne permet pas de régler le souci.
Est-ce qu'il existe un équivalent à .on()
, mais qui permette d'écouter les changements du DOM et d'appliquer par exemple .datepicker()
à des éléments qui seraient trouvés ? L'idée serait d'avoir quelque chose pour traiter ce que $(document).ready( function() { $('.datepicker').datepicker() })
fait pour le premier chargement de la page, mais ici pour des éléments chargés en AJAX.
J'aimerais aussi éviter autant que possible de devoir dupliquer la liste des choses qui sont effectuées tant dès que le DOM est prêt que quand il a été modifié.
J'ai bien pensé à faire une liste de fonctions et d'appeler quelque chose comme
1 2 3 4 5 6 7 8 9 10 11 12 | $(document).ready( function() { $.each(list, function(i, element) { element.method.call(element.arguments); }); }); $.ajax(…).then( function(data) { // … $.each(list, function(i, element) { element.method.call(element.arguments); }); }); |
Mais ça me parait un peu bricolé.
Est-ce que quelqu'un aurait une solution plus élégante à me proposer ? Même si ça passe par une bibliothèque supplémentaire, je pense que c'est imaginable.
Merci d'avance