在Safari中使用jQuery失败的变量赋值?

时间:2009-08-05 16:53:31

标签: javascript jquery safari

我正在使用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被认为是不好的做法。它应该不会找不到元素,因为除了和之外的所有内容都会加载。

2 个答案:

答案 0 :(得分:3)

尝试将变量更改为“状态”以外的其他内容。

这会使您的变量与window.status(状态栏文本)混淆。当我在调试控制台中键入var status = $('#status')时,状态栏变为[Object object]。 必须是Safari中的错误。

如果将代码放在函数中,以便status成为函数局部变量,它应该可以工作。

答案 1 :(得分:0)

jQuery中的标准做法是将内容包装在

$.onready(function() {

});

这可以确保在您尝试操作DOM之前加载DOM。