我们目前正在使用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/
答案 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