2012-05-22 90 views
0

我需要將文本居中在選擇列表中。沒有使用CSS的跨瀏覽器和設備方法,所以我使用JavaScript來設置文本縮進。在window.load上操縱DOM的jQuery代碼並不總是運行

代碼從選擇列表中獲取文本,將其添加到跨度(使用css使文本具有相同的大小),並測量跨度的寬度。有了這個值,需要一些簡單的數學來確定文本縮進所需要的。

$(window).load(function() { 
    function textIndentFunc() { 
    textString = $('#from-1 :selected').text(); 
    $('#hidden').text(textString); 
    textWidth = $('#hidden').width(); 
    inputWidth = $('#from-1 select').width(); 
    indentMy = (inputWidth/2) - (textWidth/2); 
    $('#from-1').css('text-indent',indentMy); 
} 
$('#from-1 select').change(function() { 
    textIndentFunc(); 
}); 
textIndentFunc(); 
}); 

這其中大部分的代碼工作正常,但有時似乎並不做任何事情的時候,在這種情況下刷新頁面通常修復它。爲什麼這段代碼太過氣質了?這是否與操縱dom有關?

感謝

+0

更改項目後,.change()事件會觸發嗎? –

+0

是的,這似乎總是工作正常。 – Evans

回答

4

$(document).ready()$(window).load()

當調用$(document).ready()一旦DOM處理完畢並準備被操縱的函數被調用,而load()將回調一旦所有資產被加載(圖像,聲音)。

+0

我有同樣的問題。面對代碼現在更加不可靠。僅供參考我的代碼已經有窗口加載和dom準備做不同的事情。 – Evans