JavaScript:div.container<做一些事情window.height

时间:2014-07-18 23:10:49

标签: javascript jquery html css

我有一个函数getRow(),它将一个元素放在.container中。当页面加载时,我希望有足够的元素来填充页面。

$(document).ready(function() {
    while($('.container').height() < $(window).height()) {
            getRow();
    };
});

当我这样做时,浏览器冻结并崩溃。如果我用while替换if,它会按预期放置一个元素(当然只有一个)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于您使用AJAX加载内容并且它与zerkms一样异步,因此您应该在AJAX请求完成后检查容器的高度。类似的东西:

function getRow() {
  $.ajax({
    url: 'your-url.php',
    success: function(response) {
      $('.row:last').after(response);
      checkHeight();
    }
  });
}

function checkHeight() {
  if ($('.container').height() < $(window).height()) {
    getRow();
  }
}

$(document).ready(function() {
  checkHeight();
});

编辑:由于您要异步加载内容,因此在再次检查内容高度之前,必须等待内容加载并附加到DOM。如果你执行while()循环之前你会锁定你自己和无限循环,你的异步请求将永远不会完成,因为你已经冻结了你的浏览器。