2009-08-05 72 views
1

我正在使用jQuery 1.3.2,它因爲神祕原因在Safari 4下破解。使用jQuery在Safari中失敗的變量賦值?

我所有的JavaScript引用的是由該tag之前,還與下面的代碼:

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

嘗試將變量更改爲「狀態」以外的值。

它將您的變量與window.status(狀態欄文本)混淆。當我在調試控制檯輸入var status = $('#status')時,狀態欄變爲[Object object]。 必須是Safari中的錯誤。

如果你把代碼放入一個函數中,這樣status就成爲一個函數局部變量,它應該可以工作。

0

這是標準做法的jQuery包裹在一個

$.onready(function() { 

}); 

這可以確保您嘗試操作前的DOM加載的東西。