替换html内容后的offset()值

时间:2010-12-23 10:03:14

标签: javascript jquery html offset

我有一个div作为一个包装器,几乎包含一个网站的整个DOM(从body到/ body)。如果我在文档准备好后得到其中一个元素的offset(),那么一切正常,但在替换$('#wrapper').html(newContent)后,偏移量 0

任何提示?

1 个答案:

答案 0 :(得分:0)

如果#wrapper是您的内容包装器,那么您实际上是使用新的DOM子树交换整个内容。这意味着#wrapper内的任何元素现在都不再是DOM的一部分了。以下代码说明了您的问题:

$.ready(function() {
  var elem = $('#somediv'),
      wrapper = $('#wrapper'),
      newContent = '<div>...</div>';

  alert(elem.offset().top); // displays the correct offset

  wrapper.html(newContent); // swaps out the contents of #wrapper, destroys #somediv

  alert(elem.offset().top); // displays 0, because `elem` is not inside #wrapper anymore
});

这里可以看到一个工作示例:snippet@jsfiddle