2012-09-03 156 views
0

中定義的函數我想使用$(window).resize在移動設備方向更改時調用某個函數,我寫了所有的$(document).ready內部的代碼,這在我使用Android設備時有效,但在iPhone檢測到第一個方向後,它不會再次調用$(window).resize。當我把(window).resize函數放在$(document).ready之外時,它也適用於iPhone。

在這個$(window).resize函數中,我必須調用$(document).ready塊中定義的方法,所以我該怎麼做?

+0

簡單的想法...不能讓你的功能全球?或公共或類似的東西? – Mathlight

+0

只要看看這個,這應該是足夠的:http://stackoverflow.com/questions/6960448/global-jquery-function – Mathlight

+1

你必須將它們分配給'$(document).ready'之外的變量。 –

回答

2

由於您需要使用來自兩個不同事件處理程序的內容,因此應該將事件移出事件處理程序。您無法在任一事件處理程序中創建方法,因爲您無法知道readyresize會先觸發。

例如,您可以創建包含方法的對象:

var commonMethods = { 
    data: 42, 
    someMethod: function() { alert(this.data); } 
}; 

$(document).ready(function(){ 
    commonMethods.someMethod(); 
}); 

$(window).resize(function(){ 
    commonMethods.someMethod(); 
}); 
+0

但問題意味着resize處理程序正在定義處理程序內部定義,所以它看起來不像範圍問題。無論如何,我們無法確定沒有看到代碼。 – bfavaretto

+0

@bfavaretto:調整大小處理程序在ready處理程序外部定義,以便與iPhone一起使用。 (問題中的第二句話。) – Guffa

+0

是的,我已經看到了,你的回答確實回答了標題中的問題。我的觀點是,我相信它應該能夠在ready處理程序中定義的resize處理程序中工作。我不明白爲什麼它不會。 iPhone的怪胎,也許? – bfavaretto

1

定義$(document).ready()塊之外的方法。
然後只需要在整個代碼中調用它們。這樣,您可以從$(document).ready()$(window).resize()塊中訪問它們。

+0

我的困惑是我正在用$(document).ready中的JQuery解析XML,所以在文檔沒有準備好之前我不能做解析。我已經克服了iPhone調整大小的問題,而不是通過另一個JQuery解析來解決它。 – baris

相關問題