【问题标题】:why are square brackets used in javascript function calls? jquery为什么javascript函数调用中使用方括号? jQuery
【发布时间】:2012-08-15 09:35:42
【问题描述】:

来自: andrew whittakers example showing result numbers in a custom jquery autocomplete implementation

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

为什么是[contents] 而不是contents

【问题讨论】:

  • [] 是数组,[contents] 是一个元素的数组

标签: javascript jquery syntax widget


【解决方案1】:

jQuerytrigger 函数要求第二个参数是一个数组(在 1.6.2 之前),因此需要进行包装以使其成为一个数组。来自trigger docs(由我强调):

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

事件对象总是作为第一个参数传递给事件 处理程序,但如果在一个过程中指定了附加参数 .trigger() 调用,这些参数将传递给处理程序 也是。 要传递多个参数,请使用此处所示的数组。 从 jQuery 1.6.2 开始,可以不使用 数组。

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

【讨论】:

  • 这是正确的,甚至 $(this.element).trigger("autocompletesearchcomplete", contents);将按预期工作,因为它是一个参数
【解决方案2】:

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

.trigger( eventType [, extraParameters] )

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2022-04-18
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多