Trier n tableaux d'une même page avec Jquery

Résolu/Fermé
chris0938 Messages postés 83 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 mai 2012 - Modifié par chris0938 le 10/06/2010 à 13:34
chris0938 Messages postés 83 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 mai 2012 - 10 juin 2010 à 13:34
Bonjour,
j'utilise un script JQuery permettant de trier un tableau en cliquant sur l'entête des colonnes
/* 
 * Script qui permet de trier un tableau 
 */ 

var table=function(){ 
    //creation de l'objet sorter 
    function sorter(n){ 
        this.n=n; 
        this.t; 
        this.b; 
        this.r; 
        this.d; 
        this.p; 
        this.w; 
        this.a=[]; 
        this.l=0 
    } 
    sorter.prototype.init=function(t,f){ 
        //t correspond a l'identifiant du tableau 
        //f correspond a la colonne qui sera trier lors de l'ouverture de la page 

         
        this.t=document.getElementById(t); 
        this.b=this.t.getElementsByTagName('tbody')[0]; 
        this.r=this.b.rows; 
        var l=this.r.length; 
        for(var i=0;i<l;i++){ 
            if(i==0){ 
                var c=this.r[i].cells; 
                this.w=c.length; 
                for(var x=0;x<this.w;x++){ 
                    if(c[x].className!='nosort'){ 
                        c[x].className='head'; 
                        c[x].onclick=new Function(this.n+'.work(this.cellIndex)') 
                    } 
                } 
            }else{ 
                this.a[i-1]={}; 
                this.l++; 
            } 
        } 
        if(f!=null){ 
            var a=new Function(this.n+'.work('+f+')'); 
            a() 
        } 
    } 
    sorter.prototype.work=function(y){ 
        this.b=this.t.getElementsByTagName('tbody')[0]; 
        this.r=this.b.rows; 
        var x=this.r[0].cells[y],i; 
        for(i=0;i<this.l;i++){ 
            this.a[i].o=i+1; 
            var v=this.r[i+1].cells[y].firstChild; 
            this.a[i].value=(v!=null)?v.nodeValue:'' 
        } 
        for(i=0;i<this.w;i++){ 
            var c=this.r[0].cells[i]; 
            if(c.className!='nosort'){ 
                c.className='head' 
            } 
        } 
        if(this.p==y){ 
            this.a.reverse(); 
            x.className=(this.d)?'asc':'desc'; 
            this.d=(this.d)?false:true 
        }else{ 
            this.p=y; 
            this.a.sort(compare); 
            x.className='asc'; 
            this.d=false 
        } 
        var n=document.createElement('tbody'); 
        n.appendChild(this.r[0]); 
        for(i=0;i<this.l;i++){ 
            var r=this.r[this.a[i].o-1].cloneNode(true); 
            n.appendChild(r); 
            r.className=(i%2==0)?'even':'odd' 
        } 
        this.t.replaceChild(n,this.b) 
    } 
    function compare(f,c){ 
        f=f.value, 
            c=c.value; 
        var i=parseFloat(f.replace(/(\$|\,)/g,'')), 
            n=parseFloat(c.replace(/(\$|\,)/g,'')); 
                 
        if(!isNaN(i)&&!isNaN(n)){ 
            f=i, 
                c=n 
        } 
        return (f>c?1:(f<c?-1:0)) 
    } 
    return{ 
        sorter:sorter 
    } 
}(); 


et je me demandais s'il etait possible de trier plusieurs tableaux qui se trouvent sur la même page. j'ai changé l'identifiant du tableau de facon a ce que chaque tableau est un identifiant unique mais cela ne fonctionne pas:

<table class="sortable" id="sorter_<?php echo $nomProd;?>" 

 <script type="text/javascript"> 
            var sorter=new table.sorter("sorter_<?php echo $nomProd;?>"); 
            sorter.init("sorter_<?php echo $nomProd;?>",6); 
        </script> 

est ce que quelqu'un aurait une idée?

A voir également:

1 réponse

chris0938 Messages postés 83 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 mai 2012 2
10 juin 2010 à 13:34
bonjour,
finalement j'ai trouvé un autre script qui fonctionne me permet de trier X tableau dans une même page.
-1