4

非常に奇妙な問題があります。

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 でのメソッドの名前は問題ではないようです。引数を持つメソッドは、このエラーを引き起こします。引数なしでメソッドを追加すると、エラーは発生しません。

jQuerykeyup.dismiss.modalが DOM からイベント リスナーをデタッチすると、エラーが発生します。

jQuery 1.7.1 および 1.7.2 でこのエラーを確認しましたが、これは Twitter Bootstrap の問題であり、jQuery 自体の問題ではないのではないかと考えています。

4

1 に答える 1

5

これは、jQuery と Object.prototype の拡張に関係しています。

この質問を参照してください: Javascript でオブジェクトをプロトタイピングすると jQuery が壊れますか?

基本的に、Object.prototype の拡張は避けるべきですが、詳細については回答を参照してください。

于 2012-06-11T21:40:12.750 に答える