2010-07-02 9 views
1

Je parcours des éléments d'une base de données via PHP, en essayant d'appeler un formulaire externe pour éditer chaque élément lorsque je clique dessus. J'ai écrit Javascript basé sur le framework Prototype qui me permet d'être là pour la plupart. Toutefois, lorsque vous tentez de sélectionner l'élément parent de l'élément cliqué, après la première modification réussie, les modifications suivantes échouent et le contenu du premier élément modifié est remplacé par le dernier élément cliqué.Comment sélectionner un élément spécifique généré dynamiquement avec Prototype/JS?

En d'autres termes, j'ai une liste comme ceci:

A B C

Après avoir cliqué sur "A" et le changer à "1" via ma forme externe, en sélectionnant ensuite "B" et changer à "2" résultats dans les domaines suivants:

C

Avec le conte nts du second item (B ou 2) remplaçant le contenu du premier item (a ou 1.)

Veuillez noter que ce n'est pas un problème avec mon formulaire externe PHP (l'actualisation de la page affichera toutes mes mises à jour valeurs correctement.) Mon problème est avec javascript sélection de l'élément parent correct dans lequel afficher les résultats de mon message.

(Comme une note intéressante, quand je clique à travers et changer mes éléments en commençant au bas de la liste, aucun des éléments sont écrasées et les fonctions de la page comme il se doit.)

function inlineEditor() { 
$$('div.form span.status').each(function(elm){ 
elm.observe('click',function(evt){ 
    Event.stop(evt); 
    var block = this.up('div.form'); 
    var item = block.id; 
    new Ajax.Updater(block,'status_types_edit.php',{ 
    parameters:{id:item}, 
    evalScripts:true 
    }); 
}); 
}); 
} 

<body onload="inlineEditor();"> 

<?php do { ?> 
    <div class="form" id="<?php echo $row_GetStatus_Types['id']; ?>"> 
    <span class="status"><?php echo $row_GetStatus_Types['status_name']; ?></span> 
    </div> 
<?php } while ($row_GetStatus_Types = mysql_fetch_assoc($GetStatus_Types)); ?> 

Répondre

0

Qu'est-ce que est-ce que "ceci" évalue à l'exécution? Au lieu de

var block = this.up('div.form'); 

essayer d'obtenir l'élément de l'événement:

var block = $(Event.element(evt)).up('div.form'); 
Questions connexes