2009-08-05 9 views
1

私はjQuery 1.3.2を使用しています。それは神秘的な理由からSafari 4の下で壊れています。SafariでjQueryが使用できない変数の割り当てですか?

私のjavascriptの参考文献のすべては、右のタグの前に、まだ次のコードで作られています:

var status = $('#status'); 

status.change(function(){ /* ... */ }); 

次のエラーがWebインスペクタに表示されます。

TypeError: Result of expression 'status.change' [undefined] is not a function. 

誤差があるしかし、変数の代入を取り除いても直らないのではないでしょうか?

$('#status').change(function(){ /* ... */ }); 

なぜですか?私はこれといくつかの他のfindById参照に変数を使用する必要があります。なぜなら、それらはスクリプトで何度も使用され、毎回要素ごとにDOMをクロールすることは悪い習慣とみなされるからです。 javascriptがとを除いてすべての後にロードされるので、要素を見つけることに失敗してはいけません。

答えて

3

変数を「status」以外に変更してみてください。

変数をwindow.status(ステータスバーのテキスト)と混同しています。 var status = $('#status')をデバッグコンソールに入力すると、ステータスバーが[オブジェクトオブジェクト]に変更されました。 Safariのバグでなければなりません。

statusが関数ローカル変数になるようにコードを関数内に配置すると、そのコードは機能するはずです。

0

これは、あなたがそれを操作しようとする前に、DOMがロードされているを確認します

$.onready(function() { 

}); 

で物事をラップするためにjQueryのに標準的な手法です。

関連する問題