0

这个问题确实让我困惑了很长一段时间,最终解决方案是强制从 Google CDN 加载旧版本的 jQuery。

我用这种结构构建了一个菜单:

<ul>
<li class="top-nav">
<a href="#">Top Item One</a>
<ul class="sub-nav hidden">
<li>Sub Item One</li>
<li>Sub Item Two</li>
<li>Sub Item Three</li>
</ul>
</li>

<li class="top-nav">
<a href="#">Top Item Two</a>
<ul class="sub-nav hidden">
<li>Sub Item One</li>
<li>Sub Item Two</li>
<li>Sub Item Three</li>
</ul>
</li>

... etc ...

</ul>

我有一个非常简单的切换功能,因此当单击“顶部导航”时,子导航会向下滑动并出现。

$('li.nav-top>a').toggle(function(){
    $(this).addClass('active');
    $(this).siblings('.nav-sub').slideDown(100);
}, function(){
    $(this).removeClass('active');
    $(this).siblings('.nav-sub').slideUp(100);
});

令人难以置信的令人困惑的是,在最新版本的 jQuery 中,这段代码会导致所有top-nav列表项折叠并消失,我不知道为什么,因为它只是一个切换,甚至没有针对顶级项目!

(网站是 www.sjofasting.no)

4

1 回答 1

1

选择器中的类和标记中的类不一样,toggle()已弃用,您可能应该阻止锚的默认操作以避免滚动到顶部?

$('li.top-nav > a').on('click', function(e){
    e.preventDefault();
    $(this).toggleClass('active')
           .next('.sub-nav').slideToggle(100);
});
于 2013-02-04T19:07:07.730 回答