在关闭twitter bootstrap模式时,向Object原型添加方法会导致错误

时间:2012-06-08 19:42:28

标签: jquery twitter-bootstrap

我有一个非常奇怪的问题。

我正在使用Twitter Bootstrap 2.我在页面上有一个模态对话框,我这样打开:

$('#rights-dialogue).modal();

我还在Object.prototype对象中添加了一个自定义函数,如下所示:

Object.prototype.foo = function (a) {};

单击模态对话框中的x按钮时,对话框会关闭,但黑色背景仍然存在,我在jQuery事件处理代码中出现了一个奇怪的jQuery错误:

Uncaught TypeError: Cannot read property 'origType' of undefined

如果我从foo()函数中删除所有参数,我不会收到此错误,一切正常。

这是一个说明问题的jsfiddle:http://jsfiddle.net/nicholascloud/r6T8z/5/

不知道这里发生了什么。


编辑:我注意到的其他一些事情。

Object.prototype上的方法名称似乎并不重要。任何带参数的方法都会导致此错误。如果添加的方法没有参数,则不会发生错误。

当jQuery从DOM中分离事件侦听器keyup.dismiss.modal时,会发生错误。

我已经用jQuery 1.7.1和1.7.2确认了这个错误,但我怀疑它是一个Twitter Bootstrap问题而不是jQuery本身。

1 个答案:

答案 0 :(得分:5)

这与jQuery和扩展Object.prototype有关。

请参阅此问题:Prototyping Object in Javascript breaks jQuery?

基本上,您应该避免扩展Object.prototype,但请参阅答案以获取更多详细信息。