所以我有這個元素,我需要得到width()
和height()
,但它一直返回0,但是當我在控制檯中輸入$('#lightingData').width()
時,它給了我正確的值。我想我需要使用一些其他包裝功能,我試過$(document).ready(function() {...});
和$(window).load(function(){...});
jQuery等待更長的時間,直到函數被調用
是否還有其他的包裝功能,它會等待更長的時間才能執行?
所以我有這個元素,我需要得到width()
和height()
,但它一直返回0,但是當我在控制檯中輸入$('#lightingData').width()
時,它給了我正確的值。我想我需要使用一些其他包裝功能,我試過$(document).ready(function() {...});
和$(window).load(function(){...});
jQuery等待更長的時間,直到函數被調用
是否還有其他的包裝功能,它會等待更長的時間才能執行?
的事情之一,前您可以嘗試在嘗試呼叫.width()
和.height()
之前明確等待該特定元素加載。
試試這個:
$('#lightingData').load(function() {
...height and width manipulation here...
...don't forget about scope...
});
你應該把你這裏面$(document).ready(...)
,你會希望文檔至少知道什麼是$('#lightingData')
。因爲你得到0
爲height
和width
而不是錯誤,我可以假設它們至少在調用方法之前找到。
UPDATE
每通過@Ian添加的評論,我想指出的是,這隻能對某些類型的元素(URL,內部框架,圖片/媒體等的工作 - 基本上什麼需要加載其內容)。我不打算更新代碼,因爲如果您將它用於其中一種元素,我上面的內容是正確的,如果您將它用於另一種元素,將會很愚蠢。如果你正在使用它,你只需要添加一個條件/過濾器(根據你的實現),以確定這個代碼是否應該綁定到該特定元素。
如果你是100%肯定的寬度仍然是0在$(文件)點。就緒()
試試這個:
$(function() {
$('#lightingData').show(function(e) {
var width = $(this).width();
//do something
});
});
或者,一些愚蠢的事,但會爲工作90%的情況下:
$(function() {
setInterval(function() {
var width = $('#lightingData').width();
//do something
}, 1000);
});
這一個將後$(文件)。就緒延遲動作1秒()。
沒有確切的情況很難給出指定的解決方案。
對於靜態元素,窗口加載應該足夠綽綽有餘。你用javascript添加元素嗎? – 2013-04-11 17:49:03
你可以發佈一個完整的例子和jsFiddle嗎? – j08691 2013-04-11 17:49:14
向我們顯示您的代碼 – 2013-04-11 17:49:44