【问题标题】:jQuery $(window).height wrong with dynamic added content动态添加内容的 jQuery $(window).height 错误
【发布时间】:2014-05-15 09:36:40
【问题描述】:

我正在使用 jQuery 来动态定位我的页脚,现在的问题是

$(window).height();

错了,因为我包含了一个导航使用:

$('.navigation').load('includes/navigation.html');

之后我检查但 $(window).height() 不包括添加项目的高度,我在检查高度之前添加项目,这样就不会出现问题。我也试过 $(document).ready() 和 $(window).load()

这是完整的代码

$(window).load(function(){


    $('.navigation').load('includes/navigation.html');

    var docheight = $(document).height();
    var winheight = $(window).height();

    console.log('window: ' + winheight + ', document: ' + docheight);
});

【问题讨论】:

  • 你应该在load()完成回调中设置你的逻辑,load()是异步的
  • 添加 DOM 元素不会影响$(window).height(),这是正确的行为。
  • @RoryMcCrossan 是的,对不起,即使那样 OP 也应该使用$(document).height();,对吧?!
  • 是的。虽然他说他是。在这种情况下问题是否仍然存在 OP?
  • 你是对的!使用 .load 回调有效!如果你把它作为一个答案,我会接受它! :) 谢谢!

标签: javascript jquery height jquery-load


【解决方案1】:

你应该使用load()完成回调来获取新文档的高度,否则load()是异步的,你会在新内容添加到DOM之前获取高度:

$('.navigation').load('includes/navigation.html', function(){
    var docheight = $(document).height();
});

【讨论】:

    【解决方案2】:

    这是正确的行为。

    $(window).height() 是浏览器窗口的高度,不会受到从 DOM 中添加/删除的元素的影响。

    $(document).height() 是文档在 DOM 中的高度,受到 DOM 修改的影响。

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2013-04-22
      • 2013-03-19
      • 2012-05-21
      相关资源
      最近更新 更多