Jquery设置宽度,等待更新

Jquery设置宽度,等待更新,jquery,Jquery,我试图让jquery在页面加载时设置select元素的大小,然后根据新的自动大小设置其容器的大小。这有时会起作用,但页面加载速度较慢时似乎会失败。如果我调试代码并在每一行暂停,它会100%的工作,因此我假设在下一行触发之前,每个操作都没有完成。我尝试为每一行添加setTimeout,这有一点帮助,但并非一直如此。有办法解决这个问题吗 $(document).ready(function() { //set select element to auto width setTimeout(

我试图让jquery在页面加载时设置select元素的大小,然后根据新的自动大小设置其容器的大小。这有时会起作用,但页面加载速度较慢时似乎会失败。如果我调试代码并在每一行暂停,它会100%的工作,因此我假设在下一行触发之前,每个操作都没有完成。我尝试为每一行添加setTimeout,这有一点帮助,但并非一直如此。有办法解决这个问题吗

$(document).ready(function() {

  //set select element to auto width
  setTimeout(function(){$("#PunchDD").width("auto");},5); 

  //Add some width to the element to account for custom drop down arrow
  setTimeout(function(){$("#PunchDD").width($("#PunchDD").width() + 17);},5);

  //Set container width a bit smaller to hide the stock drop down arrow
  setTimeout(function(){$("#PunchDDContainer").width($("#PunchDD").width() - 18);},5);
});

另外,我不想在css中将大小设置为“自动”,因为当javascript不工作时,我在那里使用固定大小进行故障回复。

将事件设置为在窗口加载而不是文档就绪时工作:

$(window).on('load',function(){
    // fun shtuffs
});

这应该可以解决问题,因为在进行任何操作之前,窗口和CSS格式已经加载。

您是否可以等待
load
事件而不是
ready
?区别在于,
load
等待所有静态资源(这可能会对页面布局产生影响),其中as
ready
只是等待DOM准备好进行操作。加载DOM时,select元素已准备就绪,它不需要等待像图像这样的静态资源。@adeneo Correct,但是他的问题与布局有关,在
load
事件之前,布局可能不稳定。