我有一个使用 jquery 1.x 的网站......现在,我开始在这个网站中使用 jquery 3.x......为了解决任何迁移问题,我已经安装了 JQMigrate。
它在控制台窗口中显示的消息之一是“JQMIGRATE:jQuery.fn.offset() 需要连接到文档的元素”。
我不知道如何解决它。唯一被称为“解决方案”的是:“不要尝试获取或设置无效输入的偏移信息。”
这是显而易见的,但这在实践中意味着什么?例如,如果我有
var parentOffset = $offsetParent.offset();
我应该把那行写成这样吗?
var parentOffset = $offsetParent ? $offsetParent.offset() : 0;
真的有必要吗,因为我知道 $offsetParent 始终是有效的输入。
问候
海梅
我刚刚遇到了同一行代码。
这里的问题是$offsetParent
元素不属于document
.
而不是检查$offsetParent.length
我们要确保这个元素实际上是document
// As of jQuery 3.0, .offset() only works for elements that are currently
// in the document. In earlier versions, this would return the value below
// but in jQuery 3.0 this throws an error.
var parentOffset = {top: 0, left: 0};
// If the element is in the document we are safe to use .offset()
if(document.body.contains($offsetParent[0])) {
parentOffset = $offsetParent.offset();
}
See https://github.com/jquery/jquery-migrate/blob/master/warnings.md#jqmigrate-jqueryfnoffset-requires-an-element-connected-to-a-document https://github.com/jquery/jquery-migrate/blob/master/warnings.md#jqmigrate-jqueryfnoffset-requires-an-element-connected-to-a-document有关此更改的更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)