我正在覆盖关闭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而不只是覆盖它。

我的问题是,如何将相同的方法用作扩展而不是覆盖?

最佳答案

您调用关闭函数并保存它的返回值,而不保存对它的引用:

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


更改为:

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

09-25 14:34