2011-12-08 77 views
0

我需要觸發一個函數後,我的div #gMap已將自己調整到我的變量mapHeight。使用手機,我發現以下事件觸發得太早。div調整大小後的jquery觸發器函數

$(window).resize(function() { 
    var mapHeight = (viewport() - 85); 
    $("#gMap").height(mapHeight); 
    myNewFunction(); 
}); 

function viewport() { 
    var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], x = w.innerWidth || e.clientWidth || g.clientWidth, y = w.innerHeight || e.clientHeight || g.clientHeight; 
    return y; 
} 

function myNewFunction(){ 
    alert("Div is resized"); 
} 
+0

設置'height()'是立即的;沒有回調可用或需要。 「過早觸發」是什麼意思? – Blazemonger

+0

當您調整瀏覽器窗口的大小時,大多數(但不是全部)瀏覽器都會持續激發'.resize'。這是你困擾的原因嗎? – Blazemonger

回答

2

這會在DOM更新之前觸發。爲了解決這個問題,而不是

myNewFunction(); 

試試:在DOM已與新的大小更新

setTimeout(myNewFunction(), 0); 

那麼這應該火災發生後。

+0

不正確; '.height'方法是同步的,在完成之前不會運行其他代碼。 – Blazemonger

+0

更改CSS屬性的Whlist在技術上是同步的,還有一些其他因素要考慮,因爲執行javascript的方式。看到這個問題的更深入的討論:http://stackoverflow.com/questions/779379/why-does-settimeoutfn-0-sometimes-help – extols

+0

謝謝,不幸的是它並不完全工作 - 問題特別是等待div與變量的大小相同(似乎有幾秒鐘的延遲) - 是否沒有辦法觸發OFF功能的高度? – Richard

相關問題