Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajouter/supprimer class

Anonyme
    29 septembre 2016 à 15:59:08

    bonjour,

    je travailles sur un formulaire avec backoffice pour modifier les nom et adresses des correspondants.

    Pour mon BO, j'ai un tableau qui répertorie nom, prénom, email. J'aurai au dessus un menu pour ajouter, modifier ou supprimer.

    J'ai besoin de pouvoir cliquer sur les différentes personnes donc d'ajouter une classe ou de la supprimer lors du clic.

    J'ai réussi à ajouter une classe sauf qu'elle s'ajoute sur toutes les lignes. Je n'arrive pas à ajouter/supprimer la classe seulement sur l'élément sur lequel je clique.

    Je vous montre mon code :

    <table id="liste" cellpadding="0" cellspacing="1"> 
                <thead>
                <tr>
                    <th style="text-align:left">Contact</th>
                    <th width="150">Email</th>
                    
                </tr>
                </thead>
                
                <tbody>
    				<tr id="<?php echo $tabResult['idContact'] ?>" onclick="test()">
    					<td style="text-align:left"><b><?php echo $tabResult['prenomContact'].' '.$tabResult['nomContact'] ?></b></td>
    					<td><?php echo $tabResult['emailContact'] ?></td>
    				</tr>
    			</tbody>
            </table>
     

    function test(){
    	 if(maliste = document.getElementById('liste')){
    	jQuery(function($) {
    
    			if($('#liste tbody tr').attr('class')=="select"){
    			$(this).removeClass();}
    
    				else{ 
    					if($('#liste tbody tr')!="select"){
    				
    						$("#liste tbody").find("tr").each(function(i){
    							$(this).addClass("select");
    							});	
    					} 
    			}
    		if(typeof(window['refreshQuickMenu']) != 'undefined') refreshQuickMenu();
    		}
    );}}	

    En espérant que vous puissiez m'aider,

    Merci,

    Léa


    • Partager sur Facebook
    • Partager sur Twitter
      29 septembre 2016 à 16:55:10

      Il te manque juste à spécifier la classe que tu veux enlever dans ton removeClass (soit $(this).remove("select") ), ou encore mieux : la fonction "toggleClass" (qui permet d'enlever une fonction si elle est présente, ou de la rajouter si elle est absente de l'élément) => grâce a cette fonction, tu peux carrement enlever tout ton bloc if/else

      Ensuite, ta condition ligne 2 est fausse, il te faut un double =

      Aussi, pourquoi mets-tu en paramètre '$' dans ta fonction ligne  3 ?

      -
      Edité par ArmelleNurit 29 septembre 2016 à 16:55:44

      • Partager sur Facebook
      • Partager sur Twitter
        30 septembre 2016 à 9:04:17

        Merci, ça fonctionne avec la fonction toggleClass même si c'est bizarre parce que je dois cliquer plusieurs fois pour avoir l'action...

        Mais sinon ça marche, merci !

        • Partager sur Facebook
        • Partager sur Twitter
          30 septembre 2016 à 12:24:58

          C'est bizarre que tu doives cliquer plusieurs fois ... 

          Envoie ton code :)

          • Partager sur Facebook
          • Partager sur Twitter
            3 octobre 2016 à 9:23:20

            function selectContact(){
            	 
            	jQuery(function($) {
            
            			$("#liste tbody tr").click(function() {
            				 $(this).toggleClass( "select" );
            			});
            		if(typeof(window['refreshQuickMenu']) != 'undefined') refreshQuickMenu();
            		}
            );}	

            Si je ne mets pas jQuery(function($) j'ai une erreur :
            TypeError: $ is not a function
             
            $("#liste tbody tr").click(function() {
               
            J'ai ce fichier qui est lié :
            <tr id="<?php echo $tabResult['idContact'] ?>" onclick="selectContact()">
            	<td style="text-align:left"><b><?php echo $tabResult['prenomContact'].' '.$tabResult['nomContact'] ?></b></td>
            	<td><?php echo $tabResult['emailContact'] ?></td>
            	<td><?php echo count($tabContactPrinc)+count($tabContactSec) ?></td>
            </tr>

            Celui la :

            <?php
            function afficheAction($etiq,$ico,$action,$actif){
            	$html = '[avant]<img src="../fichiers/plugins/myplugin/images/bt_'.$ico.'[actif].gif" height="42" alt="'.$etiq.'" title="'.$etiq.'"/>[apres]';
            	if($actif){
            		$html = str_replace('[avant]','<a href="" onClick="quickModif(\''.$action.'\'); return false;">',$html);
            		$html = str_replace('[actif]','',$html);
            		$html = str_replace('[apres]','</a>',$html);
            		}else{
            		$html = str_replace('[avant]','<span>',$html);
            		$html = str_replace('[actif]','_off',$html);
            		$html = str_replace('[apres]','</span>',$html);
            		}
            	return $html;
            	}
            
            $npPossible = true ;
            echo afficheAction('Nouveau','nv','nouveau',$npPossible);
            
            $modifiable = (isset($TBIDITEM) && verifDroit($TBIDITEM,'modifiable')) ? true : false ;
            echo afficheAction('Modifier','modif','modifier',$modifiable);
            
            $supprimable = (isset($TBIDITEM) && verifDroit($TBIDITEM,'supprimable')) ? true : false ;
            echo afficheAction('Supprimer','sup','supprimer', $supprimable);
            
            ?>


            Je ne sais pas si tu trouveras le problème :)

            • Partager sur Facebook
            • Partager sur Twitter

            ajouter/supprimer class

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown