如何正确覆盖jquery ui自动完成?

时间:2012-03-12 19:46:15

标签: javascript jquery jquery-ui jquery-ui-autocomplete

我正在重写关闭的jquery ui方法。通过这种方式,我可以根据我建立的selected变量将其关闭。

var originalCloseMethod = $input.data("autocomplete").close();
$input.data("autocomplete").close = function(event) {
  if (!selected){
    originalCloseMethod.apply(this, arguments);
  }
  selected = false;
};

除了以外它非常适合需要定期关闭的时间。例如,如果我在自动完成div之外单击。然后API调用close并返回:

  

originalCloseMethod未定义

这让我意识到它在UI内部调用了这个方法。

这就是为什么我假设编写此代码的最佳方式是扩展UI而不仅仅是覆盖它。

我的问题是,如何将此方法应用为扩展而不是覆盖?

1 个答案:

答案 0 :(得分:4)

你调用close函数并保存它的返回值,而不保存对它的引用:

var originalCloseMethod = $input.data("autocomplete").close();

将其更改为:

var originalCloseMethod = $input.data("autocomplete").close;