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

标签 javascript jquery html css

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

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

当我这样做时,浏览器会卡住并崩溃。如果我将 while 替换为 if,它会按预期放置一个元素(但当然只是一个元素)。

我该如何解决这个问题?

最佳答案

由于您正在使用 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() 循环之前将自己锁定在无限循环中,并且您的异步请求将永远不会完成,因为您已经卡住了浏览器。

关于JavaScript:在 div.container < window.height 时做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24835057/

相关文章:

javascript - 合并后 GAS 脚本更改工作表中的日期和时间

javascript - Angular 中声明要在模板中使用的全局函数的最佳方法是什么?

javascript - 未捕获的 TypeError : a. indexOf 不是函数 [PRELOADER]

javascript - 检查 anchor 标签颜色

javascript - 响应式菜单视口(viewport)高度

javascript - PHP 验证后提交表单后显示感谢消息

javascript - React/Redux 在第一个 Action 完成后立即触发 Action

javascript - 如何使用 html、css 和 js 将侧边栏和导航栏包含在一起

javascript - 使用 ajax 通过 HTML 中的 FormData 通过多部分表单发送数据和文件

javascript - 使用 jquery 动态字段中的事件更改