gpt4 book ai didi

javascript - jQuery Uncaught TypeError with offset().left

转载 作者:行者123 更新时间:2023-11-30 17:50:46 24 4
gpt4 key购买 nike

无论如何,我的代码在视觉上运行良好,但我的控制台中不断出现“未捕获的类型错误:无法读取未定义的‘左’属性”。我不知道是什么原因造成的。

具体来说,错误出现在以下行:

var left = $(this).siblings('li.active').offset().left - ($(this).parents('.hoverBar').offset().left + 20);**

上下文的整个函数:

 $('.hoverBar li').hover(function(){

var left = $(this).offset().left - ($(this).parents('.hoverBar').offset().left + 20);
var width = $(this).width() + "px";
var sictranslate = "translate("+left+"px, 0px)";

$(this).parent('ul').next('div.floatr').css({
"width": width,
"-ms-transform" : sictranslate,
"-webkit-transform": sictranslate,
"-moz-transform": sictranslate,
"transform": sictranslate
});

},

function(){

var left = $(this).siblings('li.active').offset().left - ($(this).parents('.hoverBar').offset().left + 20);**
var width = $(this).siblings('li.active').width() + "px";

var sictranslate = "translate("+left+"px, 0px)";

$(this).parent('ul').next('div.floatr').css({
"width": width,
"-ms-transform" : sictranslate,
"-webkit-transform": sictranslate,
"-moz-transform": sictranslate,
"transform": sictranslate

});

}).click(function(){

$(this).siblings('li').removeClass('active');

$(this).addClass('active');

return false;

});

和一些相关的 HTML:

<nav class="head_nav">
<div class="hoverBar">
<ul id="navbar">
<li class="active"><a href="">About</a>
<ul>
<li><a href="#">Mission</a></li>
<li><a href="#">Board Members</a></li>
<li><a href="#">Staff</a></li>
<li><a href="#">Members</a></li>
<li><a href="#">Task Forces</a></li>
</ul>
</li>
<li><a href="">Events</a>
<ul>
<li><a href="#">Description</a></li>
<li><a href="#">Registration with Outlook ICS</a></li>
<li><a href="#">Online Payment</a></li>
<li><a href="#">Email auto-reminders</a></li>
<li><a href="#">Multiple registrants allowed</a></li>
</ul>
</li>
</ul>
<div class="floatr"></div>
</div>
</nav>

最佳答案

我将您的代码复制到 jsFiddle: http://jsfiddle.net/mswieboda/F4fnf/在第 16 行,您需要像这样添加 .parents('.hoverBar').find('li.active'):

var left = $(this).parents('.hoverBar').find('li.active').offset().left - 
($(this).parents('.hoverBar').offset().left + 20);

这是因为悬停元素 $(this): .hoverBar > ul > li > ul > li > a 不是 .hoverBar 的兄弟元素> ul > li.active 您试图导航到 DOM 中。

这修复了您在 undefined 上尝试 .offset() 时收到的 JS 错误,因为该 jQuery 元素不存在。

关于javascript - jQuery Uncaught TypeError with offset().left,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com