在window.load上操作DOM的jQuery代码并不总是运行

时间:2012-05-22 14:44:25

标签: jquery window-load

我需要将文本置于选择列表中心。没有使用CSS的跨浏览器和设备方法,所以我使用JavaScript来设置文本缩进。

代码从选择列表中获取文本,将其添加到跨度(使用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有关?

谢谢

1 个答案:

答案 0 :(得分:4)

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

调用$(document).ready()时,一旦处理完DOM就会调用你的函数并准备好操作,而load()将在加载所有资源(图像,声音)后回调。