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