4

From: カスタム jquery オートコンプリート実装で結果番号を表示する andrew whittakers の例

 _response: function(contents){
        $.ui.autocomplete.prototype._response.apply(this, arguments);
        $(this.element).trigger("autocompletesearchcomplete", [contents]);
    }

なぜ[contents]ではないのcontentsですか?

4

3 に答える 3

5

jQuery2 番目のパラメーターが配列 (1.6.2 より前) であることは、の関数からの要件でtriggerあるため、配列にするためのラッピングです。トリガードキュメントから(私が強調します):

$('#foo').bind('custom', function(event, param1, param2) {
  alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);

イベント オブジェクトは常に最初のパラメーターとしてイベント ハンドラーに渡されますが、.trigger() 呼び出し中に追加のパラメーターが指定された場合、これらのパラメーターもハンドラーに渡されます。複数のパラメーターを渡すには、ここに示すように配列を使用します。jQuery 1.6.2 以降、配列を使用せずに 1 つのパラメーターを渡すことができます。

したがって、1.6.2 の時点では、単一の引数を配列でラップする必要は実際にはありません。

于 2012-08-15T09:38:28.943 に答える
1

関数が配列を想定している場合は、1 つ以上の要素を角括弧で囲みます。たとえば、triggerの関数宣言は

.trigger( eventType [, extraParameters] )

複数の追加パラメーターを指定したい場合があるため、それらの配列を受け入れます。あなたの場合の「contents」など、与える追加のパラメータが1つしかない場合は、それを配列に入れることができます(または、パラメータが1つしかない場合は、JQueryが受け入れるようになったため、配列に入れることもできませんどちらにしても)。

于 2012-08-15T09:40:05.277 に答える
0

Trinh が指摘したように、1 つの要素を持つ配列 [content] です。

理由はわかりませんが、[content] ではなく content に変更すると、単語全体でクエリが検索されます。

その[コンテンツ]の場合、最初だけ検索します。

于 2012-08-15T09:42:39.703 に答える