jquery - 我可以替换或修改 jQuery UI 小部件上的函数吗?如何? (猴子补丁)

标签 jquery monkeypatching

如果我想通过替换其中一个函数来调整 jQuery UI 对象的某些功能,我将如何做?

示例:假设我想修改 jQuery 自动完成小部件呈现建议的方式。自动完成对象上有一个方法,如下所示:

_renderItem: function( ul, item) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>" + item.label + "</a>" )
        .appendTo( ul );
},

我可以替换这个吗?

我认为这可能被称为猴子补丁

如何?我会使用什么语法?

最佳答案

我不了解 jQuery UI,但一般来说,这就是重新定义函数的方式:

(function() {
   var _oldFunc = _renderItem;

   _renderItem = function(ul,item) {
      // do your thing
      // and optionally call the original function:
      return _oldFunc(ul,item);
   }
})();

将其包装在匿名函数中的原因是为了创建一个闭包来存储原始函数。这样它就永远不会干扰全局变量。

<小时/>

编辑
要对 jQuery UI 小部件上的 fn 执行此操作,请使用以下语法:

仅供引用:获取函数的方式是这样的:

function monkeyPatchAutocomplete() { 

  // don't really need this, but in case I did, I could store it and chain 
  var oldFn = $.ui.autocomplete.prototype._renderItem; 

  $.ui.autocomplete.prototype._renderItem = function( ul, item) { 
     // whatever
  }; 
} 

关于jquery - 我可以替换或修改 jQuery UI 小部件上的函数吗?如何? (猴子补丁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436315/

相关文章:

javascript - 自定义 View 引擎来解决 Javascript/PartialView 问题?

javascript - js中为什么要用字母作为函数名和参数?

jquery 更改事件 - 出了什么问题?

python - 具有部分功能的猴子补丁

python - 关于将功能从 python 3.3 反向移植到 2.7 与 monkeypatching 的实际考虑

javascript - jQuery - 有没有更有效的方法来做到这一点?

javascript - 将 jQuery 的结果用于 C#

python - 让 Django 将模型 id 包含在所有模型实例的字符串表示形式中以进行调试

python - 如何导入和猴子修补与测试位于不同包中的 Python 模块?

Python 猴子补丁 Shutil