11499 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Soit une fenêtre maître-détail où je souhaite afficher le détail par un appel ajax pour éviter de rafraîchir toute la page. Dans le détail, je souhaite appeler un écran de modification, dans une fancybox.

j'ai un morceau de code php qui affiche correctement le détail d'un objet avec un lien qui appelle la fenêtre de modification de l'objet. La fenêtre s'ouvre avec fancybox en utilisant la classe appropriée.
appelons ce code "detail.php"

Tout fonctionne impeccablement si j'affiche la page php en tant que telle. Mais si cette page php s'exécute dans un appel ajax, le lien pour ouvrir la fenêtre de modif fancybox (modif.php) ne fonctionne plus. Si je fais volontairement une erreur dans le nom de la classe, la page modif.php s'ouvre mais bien sûr, dans le même onglet, sans fancybox.
résumé :
master.php appelle via ajax le code detail.php qui crache son résultat dans une div #detail.
Dans cette configuration, le lien vers la fenêtre de modification est inopérant.

mais si j'appelle detail.php tout seul, alors le lien vers la modification ouvre bien la fancybox.

Dans detail.php, je déclare ainsi la future classe à utiliser :

<script type="text/javascript" src="fancybox/jquery-min.js"></script>
<script type="text/javascript" src="fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){$("a.mamodale").fancybox({ 'hideOnContentClick': false, 'width': 1024,'height': 600,'padding' : 2,'margin'	: 2,'hideOnOverlayClick': false,'overlayColor'	:'#919191','transitionIn'	:'fade','transitionOut'	:'fade','overlayOpacity' : 0.6,'type'   :'iframe' });});
</script>


puis dans le corps de detail.php :
<a class="mamodale" href="modif.php">modifier</a>


J'ai essayé de placer le javascript dans detail.php ET dans master.php (la fenêtre appelante générale).
Je soupçonne un problème de contexte, la référence à $(document) sans doute, mais je suis bloqué.

Merci de votre aide.
Pierre