IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Boucle sur éléments [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Boucle sur éléments
    Bonjour à tous,

    depuis peu je me suis mis à utiliser prototype, et j'ai un petit soucis pour une boucle.
    Voici mon objectif : j'ai une liste créer à partir de ma base de données.
    dans ma balise <li> j'ai un <span class="deleteCat"></span>. Et je veux que sur le clic du span sa m'appelle une fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Voici mon code : 
     
    function init(){
     
    	//gestion des suppressions
    	$$('.deleteCat').each(function(p) {
    		Event.observe($(p), 'click', deleteCategory(p), false);
    	});
     
    }
     
    Event.observe(window, 'load', init, false);
    Mon problème c'est que la fonction "deleteCategory" est appelé au chargement de ma page et pas sur le click de mon span.

    Est-ce un problème de structure de boucle?
    Avez-vous une idée.

    En vous remerciant d'avance de votre aide.

    @+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2003
    Messages : 46
    Points : 51
    Points
    51
    Par défaut
    Essais avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function init(){
     
    //gestion des suppressions
    $$('.deleteCat').each(
                            function(p) 
    			{
    			    Event.observe($(p), 'click', function(event)
                                                                              { 				                                                                            deleteCategory(p);
    									   }, false);
    			});
     
    }
    Je pense que la fonction appeler pour repondre a l'evenement prend un event en parametre

    Tu devrais peut etre aussi declarer ta fonction deleteCategory de la maniere suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var deleteCategory = function(p)
    {
     // ton code ici
    }
    PS: Je n'ai pas teste si le code fournit fonctionne, je l'ai fait de tete donc il faudra peut etre l'adapter un peu ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci. C'est bon comme ça . L'evenement se fait bien uniquement sur le clic de mes span.

    Merci beaucoup cereal59.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Euhh... en faite j'ai crié victoire trop tot.

    Car mon evenement se gere bien au click. Mais sa marche une fois uniquement.

    Situation : j'ai ma liste avec un span "delete" a coté.
    Quand je clique sur mon span ca marche, mais si je veux supprimer un deuxieme element de ma liste , la ça ne marche plus.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2003
    Messages : 46
    Points : 51
    Points
    51
    Par défaut
    Peux tu montrer ton code ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    //supprime une categorie
     var deleteCategory = function (p){
    	new Ajax.Updater(
    		'listeCategory',//l'id de la liste (<ul>)
    		'r_category.php',
    		{
    			method: 'post',
    			parameters: 'deleteCategory='+ p.id,
    		}
    	);
    }
     
    // init onload
    function init(){
     
    	//gestion des suppressions
    //pour chaque span qui se trouve dans ma liste comme ceci : //<li>monTexte<span> X </span></li>
    	$$('.deleteCat').each(function(p) {//mes span ont la class "deleteCat"
    		Event.observe($(p), 'click', function (event){deleteCategory(p);}, false);
    	});
    }
     
     
    Event.observe(window, 'load', init, false);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2003
    Messages : 46
    Points : 51
    Points
    51
    Par défaut
    Que fais exactement ton ajax updater, si il reaffiche toute la liste, c'est normal que les categories ne repondent plus aux evenements.

    Je m'explique, tu definis des evenement sur des elements HTML, ensuite lors du clic, ces elements sont remplacer par d'autres, il faut donc remettre en place le gestionnaire d'evenement sur les nouveaux element en rappelant init sur le onComplete par exemple


    Peux tu me montrer aussi le HTML et le php pour etre sur que c'est bien ce qu'il se passe ??

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ul id="listeCategory">
    <?php
    include('r_category.php');
    ?>
    </ul>
    r_category.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    //liste les categories
    $query = mysql_query("select * from category;");
    while($resultat = mysql_fetch_array($query)){
    	echo'<li class="listeCat" id="cat_'.$resultat['id'].'" ><span class="move">_</span>'.$resultat['title'].'<span id="deleteCategory_'.$resultat['id'].'" class="deleteCat">x</span></li>';
    } // while
    ...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2003
    Messages : 46
    Points : 51
    Points
    51
    Par défaut
    J'ai modifie ma reponse precedente, et apparement c'est bien ce a quoi je pense

    lors du ajax updater tu remplaces le contenu de ta liste et donc les nouveaux elements html ne repondent pas aux clics.

    tu peux faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    new Ajax.Updater(
    		'listeCategory',//l'id de la liste (<ul>)
    		'r_category.php',
    		{
    			method: 'post',
    			parameters: 'deleteCategory='+ p.id,
                            onComplete : init,
    		}
    	);

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Oui. ça fonctionne. J'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onComplete: function(){init();},
    Merci beaucoup de tes réponses.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comportement étrange boucle sur éléments
    Par laloune dans le forum jQuery
    Réponses: 1
    Dernier message: 24/09/2014, 10h46
  2. Boucle for sur éléments
    Par Antoniom dans le forum jQuery
    Réponses: 3
    Dernier message: 28/05/2014, 08h18
  3. boucle sur liste d'éléments xml
    Par awalter1 dans le forum Général Python
    Réponses: 0
    Dernier message: 25/07/2011, 15h22
  4. Faire une boucle sur plusieurs éléments
    Par retwas dans le forum VB.NET
    Réponses: 4
    Dernier message: 06/04/2011, 17h30
  5. [ksh] Boucle sur le premier élément de chaque ligne d'un fichier
    Par psykoleouf dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 06/12/2007, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo