如何在twitter bootstrap中覆盖JavaScript函数

时间:2014-02-27 15:22:13

标签: javascript jquery twitter-bootstrap

我们目前正在使用Twitter Bootstrap 2.3.2,我试图找到一种方法来绑定作为下拉组件一部分的切换功能。我试图在全球范围内做到这一点,并提出了这个代码:

; (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/

1 个答案:

答案 0 :(得分:2)

您将无法从外部覆盖该功能。看看bootstrap源

$(document)
    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)

一旦绑定了此事件,对原型的任何更改都不会生效,因为原始函数已通过,您无法将其取回。

https://github.com/twbs/bootstrap/blob/master/js/dropdown.js#L141