我正在使用jQuery 1.3.2,并且由于神秘的原因它在Safari 4下破解。
我的所有javascript引用都是在标记之前创建的,但是使用以下代码:
var status = $('#status');
status.change( function(){ /* ... */ } );
Web检查器中显示以下错误:
TypeError: Result of expression 'status.change' [undefined] is not a function.
但是,如果我消除了变量赋值,则不会遇到错误,如下所示直接附加更改方法:
$('#status').change( function(){ /* ... */ } );
为什么呢?我需要为此和其他几个findById引用使用变量,因为它们在脚本中被多次使用,并且每次为每个元素抓取DOM被认为是不好的做法。它应该不会找不到元素,因为除了和之外的所有内容都会加载。
答案 0 :(得分:3)
尝试将变量更改为“状态”以外的其他内容。
这会使您的变量与window.status
(状态栏文本)混淆。当我在调试控制台中键入var status = $('#status')
时,状态栏变为[Object object]。 必须是Safari中的错误。
如果将代码放在函数中,以便status
成为函数局部变量,它应该可以工作。
答案 1 :(得分:0)
jQuery中的标准做法是将内容包装在
中$.onready(function() {
});
这可以确保在您尝试操作DOM之前加载DOM。