2010-03-05 7 views
0

J'ai une page qui contient plusieurs divs (chacun avec un ID unique et la même classe, 'parent'). Sous chaque div "parent", se trouve une div avec la classe "child" et un nom d'ID unique -child. Ce DIV est au chargement de la page vide.'click' observateur dans le prototype

Chaque fois que vous cliquez sur un DIV parent, le code suivant est exécuté.

$$('div.parent').each(function(s){ 
    $(s).observe('click', function(event){ 
     event.stop(); 
     var filer = $(s).readAttribute('filer'); 
     var currentElement = $(s).id; 
     var childElement = currentElement + '-children'; 
     new Ajax.Updater ({success: childElement}, root + '/filers/interfacechildren', { 
     parameters: {parentId: currentElement, filer: filer} 
     }); 
    }); 
}); 

Bien sûr, il est possible qu'un noeud enfant soit à nouveau un parent propre. La réponse ressemble à ceci (Smarty avec Zend Framework):

{foreach from=$ifaces item=interface} 
    <div id="{$interface->name}" filer="{$interface->system_id}" class="parent">{$interface->name}</div> 
    <div id="{$interface->name}-children" class="child"></div> 
{/foreach} 

Chaque fois que je clique sur un « parent » div qui est chargé à l'intérieur d'un enfant, rien ne se passe :(Toutes les suggestions/corrections comment résoudre ce

?

Répondre

0

fixe.
Je mis le code dans une fonction, et fait lui-même récursion onSuccess. de cette façon, lorsque les nouveaux parents sont chargés avec AJAX, le La fonction d'observateur prend en compte les nouvelles divs créées

0

Déplacer event.stop() après la Ajax.Updater?

+0

Même commenté, ça ne fonctionne toujours pas. (Mais merci pour la suggestion) – Tom

Questions connexes