Bonjour,
Sous ce titre bien pompeux un problème récurrent dans mon application...
Imaginons le code suivant :
on a donc une fonction qui créée dynamiquement une popup a partir d'une largeur et d'un contenu qu'on peut passer en paramètre depuis n'importe quel élément HTML. Ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function OuvrePopup(event) { var width = $(this).data("width"); var element_a_afficher = $(this).data("a_afficher"); //... code utilie pour creer la popup de largeur width... // popup.append($("<div />").text(element_a_afficher)); }
jusque la, tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <input type="text" data-width="200" data-a_afficher="coucou" class="input_qui_reagit" /> <script language="javascript"> $("input.input_qui_reagit").on("focus", OuvrePopup); </script>
Maintenant, imaginons que j'ai besoin d'ouvrir cette popup non plus au focus sur un input, mais par exemple lorsque je reçoit la réponse d'un appel ajax...
Comment puis-je faire pour que dans le dernier exemple, $(this).data("width") soit correctement initialisé lors de l'éxecution de OuvrePopup() ? Est-ce juste possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $.ajax({ url: "ajax.php", type: "POST", dataType: "json", async: true, data: {machin:10} }) .done(function(datas) { // la, je veux appeler ma popup // sachant que datas.width et datas.a_afficher contiennent les 2 valeurs dont j'ai besoin OuvrePopup(); // donc c'est la que j'ai un probleme ! });
Je précise que l'idée est bien d'utiliser la même fonction partout, donc pas de modif du prototype de la focntion, et on oublie les astuces type j'insère mes données dans l'event.
En vous remerciant.
Partager