Javascript 下划线菜单项

Javascript 下划线菜单项,javascript,jquery,Javascript,Jquery,我尝试使用js和jquery创建下划线菜单项。 这是我的代码 但是我的菜单项没有固定的宽度,因此下划线看起来是错误的。 有人能给我解释一下如何正确计算currpos吗?您可以使用jQuery api查找元素位置(非绝对元素) 可以使用jQuery api查找元素位置(非绝对元素) 我已经修改了脚本的一部分,以便它查看当前项目的位置和宽度,而不是“第一个”项目(您在悬停事件之外计算的项目)(即仅一次) 我已经修改了脚本的一部分,以便它查看当前项目的位置和宽度,而不是“第一个”项目(您在悬停事件之外

我尝试使用js和jquery创建下划线菜单项。
这是我的代码
但是我的菜单项没有固定的宽度,因此下划线看起来是错误的。
有人能给我解释一下如何正确计算
currpos
吗?

您可以使用jQuery api查找元素位置(非绝对元素)

可以使用jQuery api查找元素位置(非绝对元素)


我已经修改了脚本的一部分,以便它查看当前项目的位置和宽度,而不是“第一个”项目(您在悬停事件之外计算的项目)(即仅一次)


我已经修改了脚本的一部分,以便它查看当前项目的位置和宽度,而不是“第一个”项目(您在悬停事件之外计算的项目)(即仅一次)


每个元素都有不同的宽度。您必须为每个元素获取实际宽度,而不仅仅是第一个元素的宽度。

每个元素都有不同的宽度。您必须为每个元素获取实际宽度,而不仅仅是第一个元素的宽度。

是否可以删除底部悬停图像并改用此css:

border-bottom: 1px solid red;

图像加载需要更多的时间。

能否请删除底部悬停图像并改用此css:

border-bottom: 1px solid red;

图像加载需要更多的时间。

代码的问题是,您正在准备初始化菜单项宽度,并假设所有菜单项的宽度都相同

以下是具有动态项目宽度和位置的更新代码:

var animatepos = $(this).offset().left;
$('.menu-hover').stop().animate({left:animatepos, width:$(this).width()}, 300);
更新的JSIDLE链接:

您的代码的问题是,您正在就绪时初始化menuitemwidth,并假设所有菜单项的宽度都相同

以下是具有动态项目宽度和位置的更新代码:

var animatepos = $(this).offset().left;
$('.menu-hover').stop().animate({left:animatepos, width:$(this).width()}, 300);
更新的JSIDLE链接:

在您的问题中包含相关代码此操作已完成:参考此链接在您的问题中包含相关代码此操作已完成:参考此链接我尝试应用您的代码,它在JSFIDLE上工作,但在五月页面上工作方式错误-对于
span。菜单悬停
我对
有错误的含义。您能帮助吗我发现错误了吗?我在这里上载了文件,请尝试将
.offset()
.position()交换
我尝试应用你的代码,它在JSFIDLE上运行,但在五月的页面上运行错误-对于
span。菜单悬停
我对
有错误的含义。你能帮我找出错误吗?我在这里上传了我的文件,尝试将
.offset()
位置()交换