这是一个非常烦人的错误,似乎有关于此控制台错误的各种问题。它并没有让我在使用chrome的控制台中工作很多。
/**
* Dropdown menu positioning
*/
loc.dropMenuPositioning = function (){
var dropMenu = $('.js-dropdown-item-wrap');
var mainNavigationOffset = $('.js-nav-container > ul').offset();
var mainNavigationPosition = mainNavigationOffset.left;
dropMenu.css({'left' : mainNavigationPosition - 60});
};
对不起,我对这个问题没什么好处。任何帮助将不胜感激。谢谢。
答案 0 :(得分:3)
您正在从上一行返回的对象中读取 left 属性。失败的一行是:
var mainNavigationPosition = mainNavigationOffset.left;
错误意味着mainNavigationOffset未定义。
因为mainNavigationOffset设置为:
var mainNavigationOffset = $('.js-nav-container > ul').offset();
jquery可能无法获得元素$(' .js-nav-container> ul')的偏移量。
如jquery文档所述:
注意:jQuery不支持获取隐藏的偏移坐标 元素或计算边界,边距或填充 身体元素。
虽然可以获得元素的坐标 visibility:hidden set,display:none从渲染中排除 树,因此有一个未定义的位置。
检查该元素是否实际可见。
另一种选择(看起来真的发生了)是jquery表达式:
$('.js-nav-container > ul')
未返回任何元素。
要查看元素是否可见,您可以使用chrome dev工具:
或者您只需在控制台中执行:
$('.js-nav-container > ul').css("display");
$('.js-nav-container > ul').css("visibility");
答案 1 :(得分:1)
答案 2 :(得分:1)
检查您的jQuery版本是否高达1.2,.offset()方法可能无法在旧版本中使用。