2009-05-20 6 views
0

これは現在進行中のプロジェクトです。私はjQueryt用のtablesorterプラグインに基づいてカスタムテーブルソーターを開発してきました。ありがたいことに、ちょうど完了しました。私の最後の質問はこれで次のように、私はテーブルのヘッダーを持っている:メタデータパーサーをテーブルヘッダーに追加する

<th class="blue_bg"><a rel = "Header" href="#" title="Sort column in decending order" class="">Seats Available</a></th> 

私は特定の列のソート無効にするインラインメタデータパーサを追加したいと思います。私は現在、クラスなしで、各ヘッダを通過トラバース機能を持っており、次のようにパーサを追加します。

//th without a class automatically get sorting disabled 
    $("th[class='']").each(function(){ 
    $(this).addClass("{sorter: false}"); 
}); 

私も列が可能かどうかを示す特定の文字列を経由する1および検索を持っていますソートから無効:ユーザーは、デフォルトでは、ユーザ定義の文字列で、それ以外の場合は指定しない限り、そのよう

//Add disabling parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
    $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
}); 

は基本的に、私はそれをセットアップをしたい、列が無効にソートしているだろう。要約すると、私は、クラスを全く持たない列に対してディスパッチ禁止を設定しており、ディスエーブル文字列を指定するクラスを持っています。また、ユーザーがヘッダー内に他のクラスを持つことができる3番目の条件が欲しいです。この例では、ユーザーが列の背景を青にするように指定しています。しかし、この例のヘッダーに無効なパーサーを追加するためにはどの構文が必要なのかよく分かりません。ヘルプは、前もって感謝します。

UPDATE:ここwhattの中に基づいてパーサーを追加し、私の完全な機能がある、またはではないが、番目のクラス属性:

$(function(){ 
    //Add disabling parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
     $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
    }); 

    //th without a class automatically get sorting disabled 
    $("th[class='']").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add parser to each table that has a class="csuci.sortable." 
    $("th[class*='csuci.sortable.date']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}"); 
    }); 

    $("th[class*='csuci.sortable.percent']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'percent'}"); 
    }); 

    $("th[class*='csuci.sortable.ip']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'ip-address'}"); 
    }); 

    $("th[class*='csuci.sortable.url']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'url'}"); 
    }); 

    $("th[class*='csuci.sortable.money']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'currency'}"); 
    }); 

    $("th[class*='csuci.sortable.time']").each(function(){ 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'time'}"); 
    }); 
}); 

答えて

1

だから、あなたがソーターを有効にしたい場合は何ですか?ソーターが有効になっている唯一のケースのように聞こえるのは、直接真のフラグです。 notを使用するだけでよいでしょう。

$("th:not([class*='csuci.sortable.true'])").each(function(){ 
    $(this).addClass("{sorter: false}"); 
}); 

ソートが唯一の真のフラグで有効になっており、あなたは、あなたがすべての列にマッチし、フラグを設定するために、条件を使用することができ、すべての要素のためのソーターを設定する必要がされている場合。

$("th").each(function(){ 
    var sortEnabled = $this.hasClass('csuci.sortable.true'); 
    $(this).addClass("{sorter: "+sortEnabled+"}"); 
}); 
+0

私は追加している特別なブールクラスはありません。ただ検索する各トラバーサル関数をハードコードする任意の文字列です。次に、クラス内の文字列に基づいてソートパーサーを追加します。 – kingrichard2005

+0

jQueryデータの使用を検討しましたか? http://docs.jquery.com/Core/data#namevalue – gradbot

0

は私が単純にすべてのテーブルのヘッダーに無効パーサを追加先頭にトラバーサル機能を追加し、これを回避する方法を見つけることに成功し、その後、後続の各トラバースは、ハードコーディングされたため無効パーサ、チェックを削除します必要なパーサーを追加します。

$(function(){ 

    //Add disable parser to all headers 
    $("th").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add disable parser to each header with a disable class 
    $("th[class*='csuci.sortable.false']").each(function(){ 
     $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}"); 
    }); 

    //th without a class automatically gets sorting disabled 
    $("th[class='']").each(function(){ 
     $(this).addClass("{sorter: false}"); 
    }); 

    //Add parser to each table that has a class="csuci.sortable.date" 
    $("th[class*='csuci.sortable.date']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.percent" 
    $("th[class*='csuci.sortable.percent']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.percent").addClass("{sorter: 'percent'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.ip" 
    $("th[class*='csuci.sortable.ip']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.ip").addClass("{sorter: 'ip-address'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.url" 
    $("th[class*='csuci.sortable.url']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.url").addClass("{sorter: 'url'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.money" 
    $("th[class*='csuci.sortable.money']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.money").addClass("{sorter: 'currency'}"); 
    }); 
    //Add parser to each table that has a class="csuci.sortable.time" 
    $("th[class*='csuci.sortable.time']").each(function(){ 
     $(this).removeClass("{sorter: false}"); 
     $(this).removeClass("csuci.sortable.time").addClass("{sorter: 'time'}"); 
    }); 
}); 

おそらく最もクリーンな方法ではありませんが、動作します。ここのStackOverflowでは、jQueryの動作に関する貴重な洞察力を提供してくれています。本当に素晴らしいライブラリです。

関連する問題