4

来自: andrew whittakers 示例显示自定义 jquery 自动完成实现中的结果编号

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

为什么[contents]而不是contents

4

3 回答 3

5

jQuery的函数要求trigger第二个参数是一个数组(在 1.6.2 之前),因此需要进行包装以使其成为一个数组。从触发文档(我强调):

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

事件对象始终作为第一个参数传递给事件处理程序,但如果在 .trigger() 调用期间指定了其他参数,这些参数也将传递给处理程序。要传递多个参数,请使用此处所示的数组。从 jQuery 1.6.2 开始,可以在不使用数组的情况下传递单个参数。

所以从 1.6.2 开始,实际上没有必要将单个参数包装在一个数组中。

于 2012-08-15T09:38:28.943 回答
1

如果函数需要一个数组,则将一个或多个元素放在方括号中。例如,trigger的函数声明是

.trigger( eventType [, extraParameters] )

由于您可能想给它多个额外的参数,它接受它们的数组。如果您只有一个额外的参数,例如您的情况下的“内容”,那么您可以将它放入一个数组中(或者如果您只有一个参数,您也不能将它放入一个数组中,因为 JQuery 现在接受无论哪种方式)。

于 2012-08-15T09:40:05.277 回答
0

正如 Trinh 指出的那样,它是一个包含一个元素的数组 [content]。

我不知道为什么,但是如果您将其更改为内容而不是 [内容],它将在整个单词中搜索查询。

如果它的 [content] 它只会在开头搜索。

于 2012-08-15T09:42:39.703 回答