0

いくつかのフィルターを使用してテーブルをフィルター処理しようとしています。単純な選択のものもあれば、倍数のものもあります。単純なものの場合、それは問題ありませんが、複数ではありません。

私はこの論理に従いたい:

  1. フィルタを含む配列を通過する(filtre_transports
  2. 値を含む配列を通過する(ligne_transports
  3. 1.の要素が2.にない場合は、行(transports_matches = false)を表示しないでください。

私はこのコードを作りました:

// Pass through each line of the table
jQuery('#agents_liste tbody tr').not('.vide').each(function() {
    var transports_matches = true;

    // ligne_transports is an array contains values to compare with the filter
    var ligne_transports = jQuery(this).children('td').eq(2).text().split('###');

    // filtre_transports is an array contains the selected val of a multi select
    jQuery(filtre_transports).each(function() {
        var filtre = jQuery(this);
        var filtreOk = false;

        jQuery(ligne_transports).each(function() {
            if (filtre == jQuery(this)) {
                filtreOk = true;
                return false;
            }
        });

        if (!filtreOk) {
            transports_matches = false;
            return false;
        }
    });
});

問題:フィルターを選択すると、結果transports_matchesは常にfalseになります。

ところで、私は答えがクラスを使用することであるこの投稿を見ました、しかしそれらなしで方法はありますか?

編集:ここでJSFiddleを見ることができます。

ありがとう

4

1 に答える 1

1

修正済み:http://jsfiddle.net/r4mfv/2/

いくつかの問題がありました。

  1. $(filtre_transports).each配列を反復処理する方法ではないため、を使用する必要があります$.each(filtre_transports, function() {...})

  2. それらを比較する前に、キャストfiltreしてください。thisString

于 2012-06-05T08:45:15.817 に答える