我们目前使用 Twitter Bootstrap 2.3.2,我正在尝试找出一种方法来绑定(bind)属于下拉组件一部分的切换功能。我试图在全局范围内做到这一点,并提出了以下代码:
; (function ($, window, document, undefined)
{
var oldToggle = $.fn.dropdown.Constructor.prototype.toggle;
$.fn.dropdown.Constructor.prototype.toggle = function (e)
{
console.log('here');
return oldToggle.call(this, e);
}
})(jQuery, window, document);
当我将此代码放入 Bootstrap 文件中时,覆盖工作正常。当我尝试将其包含在页面的其他位置时,我的 console.log 永远不会执行。我在这里缺少什么?
这是一个指向 JSFiddle 的链接,其中包含上面发布的代码 http://jsfiddle.net/whoiskb/8nvuk/1/
最佳答案
您将无法从外部覆盖该函数。查看bootstrap源码
$(document)
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
一旦绑定(bind)了此事件,对原型(prototype)的任何更改都不会生效,因为原始函数已传递并且您无法收回。
https://github.com/twbs/bootstrap/blob/master/js/dropdown.js#L141
关于javascript - 如何在 twitter bootstrap 中覆盖 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072809/