Javascript 功能太快了?

Javascript 功能太快了?,javascript,jquery,Javascript,Jquery,这个函数实际上可以工作,但我认为它不是一个好的解决方案。如果不添加setTimeout,该函数将无法正常工作。(它可能只加载一半的图片)。 是否存在在for循环中不使用“I”的问题 将标记加载到一个隐藏的“load”div中以处理它们并将它们排序为3个不同的div,这是一个“好”的解决方案吗 function loadpictures() { $('#load').empty(); $('#picTop').empty(); $('#picMiddle').empty(); $(

这个函数实际上可以工作,但我认为它不是一个好的解决方案。如果不添加setTimeout,该函数将无法正常工作。(它可能只加载一半的图片)。 是否存在在for循环中不使用“I”的问题

标记加载到一个隐藏的“load”div中以处理它们并将它们排序为3个不同的div,这是一个“好”的解决方案吗

function loadpictures() {
  $('#load').empty();
  $('#picTop').empty();
  $('#picMiddle').empty();
  $('#picBottom').empty();

  $('#load').load('pages/bilder.html .' + category, function() {

    LineW[0] = LineW[1] = LineW[2] = 0;

    for (var i = 0; i < $('#load img').length; i++) {
      window.setTimeout(function() {
        var shortLine = 0;
        for (var j = 1; j < 3; j++) {
          if (LineW[j] < LineW[shortLine]) {
            shortLine = j;
          }
        }
        switch (shortLine) {
          case 0:
            $('#picTop').prepend($('#load img')[0]);
            LineW[0] += $('#picTop img')[0].offsetWidth;
            break;
          case 1:
            $('#picMiddle').prepend($('#load img')[0]);
            LineW[1] += $('#picMiddle img')[0].offsetWidth;
            break;
          case 2:
            $('#picBottom').prepend($('#load img')[0]);
            LineW[2] += $('#picBottom img')[0].offsetWidth;
        break;
    }
  }, 20);
}
函数加载图片(){
$('#load').empty();
$('#picTop').empty();
$('#picMiddle').empty();
$('#picBottom').empty();
$(“#load”).load('pages/bilder.html.+category,function(){
LineW[0]=LineW[1]=LineW[2]=0;
对于(变量i=0;i<$('#加载img')。长度;i++){
setTimeout(函数(){
var短线=0;
对于(var j=1;j<3;j++){
if(LineW[j]
})); }等待图像加载。如果您想重构它,我建议您先获取一组图像路径,然后使用他/她的函数

function loadImage(path, width, height, target) {
  $('<img src="'+ path +'">').load(function() {
    $(this).width(width).height(height).appendTo(target);
  });
}
函数加载图像(路径、宽度、高度、目标){
$('').load(函数(){
$(this).width(width).height(height).appendTo(target);
});
}

我将for循环替换为。每个jquery函数现在都非常适合我:)无论如何

$('#load').load('pages/bilder.html .'+category, function(){

$('#load img').each(function () {
    var shortLine = 0;
    for(var j = 1; j < 3; j++){
        if(LineW[j] < LineW[shortLine]){
            shortLine = j;
        }
    }
    switch (shortLine) {
        case 0:
            $('#picTop').prepend($('#load img')[0]);
            LineW[0] += $('#picTop img')[0].offsetWidth +5;
            break;
        case 1:
            $('#picMiddle').prepend($('#load img')[0]);
            LineW[1] += $('#picMiddle img')[0].offsetWidth +5;
            break;
        case 2:
            $('#picBottom').prepend($('#load img')[0]);
            LineW[2] += $('#picBottom img')[0].offsetWidth +5;
            break;
    }
});
});
$('#load').load('pages/bilder.html.+category,function(){
$('#加载img')。每个(函数(){
var短线=0;
对于(var j=1;j<3;j++){
if(LineW[j]
但是该函数应该做什么呢?该函数将另一个文件中带有have class X的img标记加载到一个隐藏的div“#load”中,然后我根据每个div的总宽度将图片排序为3个可见的div(总是将下一张图片添加到最短的部分)如果你有一个解决方案,你应该把它作为一个答案,并接受它。回答你自己的问题是可以的。