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

jQuery Discussion :

Parcours d'un tableau


Sujet :

jQuery

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut Parcours d'un tableau
    Bonjour,

    Je suis en train d'écrire un script qui fait la chose suivante :
    - afficher une liste
    - au choix d'un item de la liste, afficher une sous liste
    - au choix d'un item de la sous liste (qui possède un id unique), afficher 3 inputs de formulaire + 1 bouton enregistrer
    - au clic sur enregistrer : ajout les éléments des inputs dans un tableau associatif avec l'id unique comme index + une crois au bout de chaque ligne d'item permettant la suppression de la ligne
    - au clic sur le bouton supprimer : parcours du tableau et retrait de la ligne dont l'id a été passé en paramètre.

    Jusque là tout va presque bien... En effet, je clique sur un thème, sélectionne le sous thème, saisis des éléments dans les champs et clique sur enregistrer.
    Je vois bien ma sélection dans le tableau (j'affiche le tableau) et j'ai bien la croix pour supprimer.

    Le problème : je clique d'une une croix, ça retire bien la ligne du tableau, mais si je clique sur les autres items, rien ne se passe (pas d'erreur ou d'infos dans la console). Voici mon code :

    Code html : 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
    26
    27
    28
    29
    30
     Partie HTML
    <html>
    	<head>
    		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    		<script type="text/javascript" src="custom.js"></script>
    	</head>
     
    	<body>
     
    	<div id=theme></div>
    	<hr>
    	<div id=categorie></div>
    	<hr>
    	<div id="formExpertise" style="display:none;">
    		<input type=text id="selectedCat">
    		<input type=text id="selectedCatId">
    		<select id="niveauCat">
    			<option value=0>débutant</option>
    			<option value=1>confirmé</option>
    			<option value=2>expert</option>
    		</select>
    		<input type=text id="tagsCat">
    		<textarea id="commentaireCat"></textarea>
    		<input type=button id="regExpertise" value="enregistrer">
    	</div>
    	<hr>
    	<div id="listeExpertise"></div>
    	<hr>
    	<input type=button id="checkTab" value="check">
    </html>

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     PARTIE JS
    $( document ).ready(function() {
     
    	// liste des sélection
    	var tabSelect = new Object();
    	var nbSelection = 0;
    	var tabCategorie = new Object();
     
    	// liste des thèmes
    	var theme = new Object();
    		theme["1"] = 'theme 1';
    		theme["2"] = 'theme 2';
    		theme["3"] = 'theme 3';
     
    	// liste des catégories par thèmedia
    	var categories = new Object();
     
    	var categorie = new Object();
    		categorie["11"] = 'categorie 11';
    		categorie["12"] = 'categorie 22';
    		categorie["13"] = 'categorie 23';
    		categories["1"] = categorie;
     
    	var categorie = new Object();
    		categorie["21"] = 'categorie 21';
    		categorie["22"] = 'categorie 22';
    		categorie["23"] = 'categorie 23';
    		categories["2"] = categorie;
     
    	var categorie = new Object();
    		categorie["31"] = 'categorie 31';
    		categorie["32"] = 'categorie 32';
    		categorie["33"] = 'categorie 33';
    		categories["3"] = categorie;
     
    	var str = '';
     
    	// affichage des thèmes
    	for(var i in theme){
    		str += '<li><a href=# class="selectTheme" id="'+i+'">'+theme[i]+'</a></li>';
    	}
    	$("#theme").html(str);
     
    	// sur la sélection d'un thème, on affiche une catégorie
    	$(".selectTheme").click(function(){
    		var str = '';
    		for(var i in categories[this.id]){
    			str += '<li><a href=# class="selectCateg" id="'+i+'">' + categories[this.id][i] + '</a></li>';
    		}
    		$("#categorie").html(str);	
     
    		// sélection d'une catégorie
     
    		$(".selectCateg").click(function(){
     
    			$("#selectedCatId").val(this.id);
    			$("#selectedCat").val($(this).html());
    			$("#formExpertise").show();
     
    		});
     
    	});
     
    	// enregistrement d'un élément
    	$("#regExpertise").click(function(){
    		// création d'un tableau avec les données renseignées
    		var tab =  new Object();
    			tab["0"] = $("#selectedCatId").val();
    			tab["1"] = $("#selectedCat").val();
    			tab["2"] = $("#niveauCat option:selected").val();
    			tab["3"] = $("#tagsCat").val(); 
    			tab["4"] = $("#commentaireCat").val();
     
    		// ajout de tab dans le tableau des sélections
    		tabSelect[$("#selectedCatId").val()] = tab;
     
    		// affichage des données du tableau
    		$("#listeExpertise").html(displayTab(tabSelect));
     
    		// suppression d'un élément
    		$(".suppExpertise").click(function(){
     
    			var tabTmp = new Object();
    			for (var indiceTab in tabSelect){
    				if (indiceTab != this.id){
    					tabTmp[indiceTab] = tabSelect[indiceTab];
    				}
    			}
    			tabSelect = new Array();
    			tabSelect = tabTmp;
     
    			// affichage des données du tableau
    			$("#listeExpertise").html(displayTab(tabSelect));
    		});	
     
    	});
     
    	$("#checkTab").click(function(){	
    		alert(objSize(tabSelect));
    	});
     
    	function displayTab(tab){
    		strSel = '';
    		for (var j in tab){
    			strSel += '<li>' + j + ' => ' + tab[j][0] + ' - ' +  tab[j][1] + ';' +  tab[j][2] + ';' +  tab[j][3] + ';' +  tab[j][4] + ' => <a href=# class="suppExpertise" id="' + j + '">X - ' + j + ' - X</a>';
    		}
    		return strSel;
    	}
    Auriez-vous une idée du pourquoi du comment ? Une piste ?

    Merci de votre aide !

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 531
    Points
    3 531
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je sais pas trop pourquoi tu défini le .click de suppression dans l'événement de l'enregistrement, et pour te dire franchement je ne sais même pas trop ce que ça doit faire, à part que ça me parait bancal.

    Pour moi il faut définir l'événement click de suppression en dehors avec un .on pour binder les éléments dynamiques.

    $("#listeExpertise").on('click' , '.suppExpertise' , function(){ ..... });

    Voilà m'sieur
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

Discussions similaires

  1. [Tableaux] Parcours d'un tableau
    Par wormseric dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2006, 13h53
  2. [MySQL] Parcours d'un tableau et suppression des entrées
    Par padoberg dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2006, 13h41
  3. probleme de parcours d'un tableau
    Par rodriguez_du35 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2006, 09h16
  4. parcours d un tableau de l interface graphique
    Par natasha84 dans le forum MFC
    Réponses: 7
    Dernier message: 26/05/2006, 23h29
  5. Parcour d un tableau dynamique
    Par harris_macken dans le forum Débuter
    Réponses: 12
    Dernier message: 24/05/2005, 22h23

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