加载新页面时Jquery滑出底部顶部鼠标悬停菜单问题

发布于 2024-10-14 09:06:54 字数 790 浏览 0 评论 0原文

我正在努力将菜单从 mootools 转换为 jquery。有多种原因导致我必须切换 js 框架,我在这里需要一些帮助,因为我对 jquery 很陌生。

首先是实时站点上的工作 mootools 版本: http://www.kieleconomcis.de

如您所见,菜单悬停时向上移动,显示子菜单,并在您单击链接并加载页面时保持不动

现在我必须将其转换为jquery,我还希望能够单独控制每个菜单的高度,因此它a)看起来更像条形图,b)我可以放置4个子菜单: )

我尝试了一下,复制粘贴,尝试并出错,最后在这里得到了这个 fiddle

我的问题是 - 我猜 - 我有一个 $('div.nav_body').hide(); 但我需要告诉它它必须忽略如果前面的元素有 id="visible" ,则会产生效果,

这里是一些代码,以便您可以看到我需要触发的内容:

    <h4 id="visible">Über uns</h4>
        <div id="nav2-body" class="nav_body">

感谢您的任何建议。

i'm struggling with converting a menu from mootools to jquery. there are various reasons why i have to switch the js framework and i need some help here because i quite new to jquery.

first the working mootools version on the live site: http://www.kieleconomcis.de

as you can see the menu moves up on hover, reveals the sub menu and stays up when you click a link and load the page.

now that i have to convert this into jquery i also want to be able to control the heigth of each menu individually, so it a) looks more like a bar graph and b) i can place 4 submenus :)

i played around, copy&pasted, tried&errored and ended up with this fiddle here.

my problem is - i guess - that i have a $('div.nav_body').hide(); but i need to tell it that it has to ignore the effect if the element before it has an id="visible"

here is some of the code so you can see what i need to trigger:

    <h4 id="visible">Über uns</h4>
        <div id="nav2-body" class="nav_body">

thanks for any adice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吲‖鸣 2024-10-21 09:06:54

使用 :not():has() 选择器有效:

$('div.nav_container:not(:has(#visible)) .nav_body').hide();

filter() 方法也有效:

$('div.nav_body').filter(function () {
    return !$(this).prev().is("#visible");
}).hide();

或者使用 。 not() 从要隐藏的项目中删除一个子菜单:

$('div.nav_body').not($("#visible").next()).hide();

我在你的小提琴中测试了所有三个子菜单。但我真的不能说我最喜欢哪一个。

Using the :not() and :has() selector works:

$('div.nav_container:not(:has(#visible)) .nav_body').hide();

The filter() method works as well:

$('div.nav_body').filter(function () {
    return !$(this).prev().is("#visible");
}).hide();

Or use .not() to remove the one submenu from the to-be-hidden items:

$('div.nav_body').not($("#visible").next()).hide();

I tested all three in your fiddle. I can't really say which one I like best, though.

只为守护你 2024-10-21 09:06:54

您可以检查它的父 h4 是否将其 id 设置为可见

if ($('div.nav_body').parent('h4').attr('id') == 'visible')

You can check if it's parent h4 has it's id set to visible

if ($('div.nav_body').parent('h4').attr('id') == 'visible')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文