2

私は次のコードを持っています:

     $.extend($.fn.dataTableExt.oSort, {
        "datetime-uk-pre": function (a) {
            from = a.split(' ');
            var ukDatea = from[0].split('/');
            var ukTimea = from[1].split(':');
            return (ukDatea[2] + ukDatea[1] + ukDatea[0] + ukTimea[1] + ukTimea[0]) * 1;
        },
        "datetime-uk-asc": function (a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },
        "datetime-uk-desc": function (a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    });

    $.extend($.fn.dataTableExt.oSort, {
        "date-uk-pre": function (a) {
            var ukDatea = a.split('/');

            return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
        },
        "date-uk-asc": function (a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },
        "date-uk-desc": function (a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    });

私はextendについて読みましたが、それが何をしているのかまだ理解していません。誰かがこれを説明するのを手伝ってもらえますか?私が探しているのは、可能な限り簡単な説明です。また、これら2つのコードブロックを何らかの方法で組み合わせることができますか。

これは、データテーブルに別の並べ替え方法を提供するためのコードです。しかし、それはどういう意味ですか:

$.fn.dataTableExt.oSort
4

3 に答える 3

5

DataTables基本パッケージにいくつかの並べ替えオプションを提供します。あなたが見ているものはタイプベースの列ソートと呼ばれ、基本的にそのタイプに基づいて列をソートしようとします。DataTablesは、、、、などDateの最も一般的なタイプのデフォルトの並べ替え関数をすでにプロビジョニングしています。これらは、を使用してアクセスできる、というオブジェクトにプロパティとして登録されます。このオブジェクトは次のようになります。NumericHTMLoSort$.fn.dataTableExt.oSort

oSort = {
  "string-pre": function ( a ) {
    // ...
  },
  "numeric": function ( a ) {
    // ...
  }
}

ただし、カスタムタイプのカスタム並べ替え関数が必要な場合は、オブジェクトにキーまたはプロパティoSortを追加することで、オブジェクトを拡張できます。oSort

たとえば、と呼ばれる新しいタイプを追加するにはdate-uk-pre、次を使用できます。

$.fn.dataTableExt.oSort['date-uk-pre'] = function ( a ) {
  // ...
}

つまり、をという新しいプロパティで拡張します。jQueryはこれに対する近道に他なりません。各プロパティを手動で追加する代わりに、新しいタイプごとに、すべての新しいタイプ(たとえば、、、およびjQueryがそれらを既存のオブジェクトとマージし、新しい関数で効果的に拡張する)とともに新しいオブジェクトを渡します。両方を組み合わせることもできます。sから単一のものへ:oSortdate-uk-pre$.extend()date-uk-predatetime-uk-preoSort$.extend()

$.extend($.fn.dataTableExt.oSort, {
    "date-uk-pre": function (a) {
        var ukDatea = a.split('/');

        return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
    },
    "date-uk-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "date-uk-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    },
    "datetime-uk-pre": function (a) {
        from = a.split(' ');
        var ukDatea = from[0].split('/');
        var ukTimea = from[1].split(':');
        return (ukDatea[2] + ukDatea[1] + ukDatea[0] + ukTimea[1] + ukTimea[0]) * 1;
    },
    "datetime-uk-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },
    "datetime-uk-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});
于 2012-09-10T14:04:31.640 に答える
1

このような:

var m1 = {'a':'a','b':'b'};
var m2 = {'c':'c','d':'d'};
var m3 = {'e':'e','f':'f'};

$.extend(m1,m2,m3);

console.log("m1:");
console.log(m1);

//Result : 
//m1:
//{'a':'a','b':'b','c':'c','d':'d','e':'e','f':'f'};

また、1つの引数の場合:

$.extend(m1)

と同等です

$.extend($, m1);

また

jQuery.extend(jQuery, m1);

したがって、jQueryは拡張されます。次に、jQueryには、上記の特定の例で2つの追加プロパティが含まれます:'a':'a'および'b'、'b'。したがって、$。aは「a」を返します。

詳細については、 http://api.jquery.com/jQuery.extend/を参照してください。

于 2012-09-10T13:57:20.943 に答える
1

extend関数は、2番目の引数で定義されたプロパティを最初の引数のオブジェクトに追加します。通常、上記のコードのように、プラグインに機能を追加するために使用されます。上記のコードは、$.fn.dataTableExt.oSortオブジェクトに6つの関数を追加します。Google検索からこのプラグインはどれですか。プラグインを拡張した後、次のようなことができます。

$('selector').dataTableExt.oSort.date-uk-pre();
于 2012-09-10T13:57:29.277 に答える