2017-06-13 6 views
0

私はテーブルリストを使用します(https://mottie.github.io/tablesorter/docs/index.html) HTMLテーブルをソートするにはtablesorterのカスタムソート順 - jquery

私は1つの並べ替えを持っています私はハウツー語を見つけることができません。すなわち、

  • (4)
  • (DNS)

としてソートされる

  • DNS:

    • (4)
    • (DNS)
    • DNS要するに

    :()は無視されるべきであると数値ソート、数値の最初のアルファベット順。

    私は文字を置き換える方法を見てきました。(一部のランクでも "空"として機能しません) 私が見たパーサーは、ヘッダーごとに作成し、置き換えられる既知の値が必要です。 すなわち:

    $.tablesorter.addParser({ 
        id: 'nummeriek', 
        is: function(s) { 
         return false; 
        }, 
        format: function(s) { 
         // format your data for normalization 
         return s.toLowerCase().replace('dns',999).replace('(dns)',999).replace('(4)',4); 
        }, 
        type: 'numeric' 
    }); 
    
    $('.tablesorter').tablesorter({ 
         headers: { 
          6: { 
           sorter:'nummeriek' 
          } 
         } 
    }); 
    

    私は()文を置き換えるの数百を作成してしまう可能なすべてのテーブルの内容のためにこれを行う必要がある場合。 1から100のスコアがあるので、(1)から(100)も可能です。

    もっと簡単な方法が必要です。どんな助けでも大歓迎です。

  • 答えて

    0

    デフォルトのdigitパーサは、かっこで囲まれた数字が負であると「仮定します」。これは会計で負の数を示す一般的な方法です(ref)。

    これを回避するには、あなたは少しパーサ(demo)を変更する必要があります

    $(function() { 
        $.tablesorter.addParser({ 
        id: 'nummeriek', 
        is: function(s) { 
         return false; 
        }, 
        format: function(str) { 
         // format your data for normalization 
         var s = str.replace(/[()]/g, ""), 
         n = parseFloat(s); 
         return !isNaN(n) && isFinite(n) ? n : s; 
        }, 
        type: 'numeric' 
        }); 
    
        $('.tablesorter').tablesorter({ 
        headers: { 
         0: { 
         sorter: 'nummeriek' 
         } 
        } 
        }); 
    }); 
    

    注:このパーサは常に例えば、括弧なしで非数値文字列を返します"(dns)"は "dns"になります。私はそれを "dns"であるかのように "(dns)"エントリーが並べ替えるようにこの方法で保管しました。

    +0

    今は素晴らしいです。ありがとう! – Pieter

    +0

    私が残していることの1つは、関係するヘッダーの量です。これは1列のテーブルなので、2、8、12の可変量の列を簡単に持つことができます。私はここで見つけたaddClassメソッドを試しました:https://stackoverflow.com/questions/9014962/jquery-tablesorter-custom-parser-to-all-headersしかし、私はそれをすべての列で動作させることはできません。何か? – Pieter

    +0

    おっと、申し訳ありませんが、私はあなたの質問を逃した。 'headers'オプションでは、jQueryセレクタを使用して、ゼロベースのインデックスの代わりにカラムをターゲットにすることができます。' headers:{'.nummeriek':{ソーター: 'nummeriek'}} '([例](https: /モチー。github.io/tablesorter/docs/example-options-headers.html))。あるいは、それを必要とする各列に 'sorter-nummeriek'クラスを追加してください。 – Mottie

    関連する問題