jquery菜单使用slidetoggle()的小问题

发布于 2024-12-13 01:34:42 字数 575 浏览 0 评论 0原文

Iv 创建了一个基本的垂直滑动菜单,可以在左侧垂直灰色条上看到:

http://www .switchcreative.co.uk/tuckagefinewines/

当您单击某个国家/地区时,子菜单项会向下滑动,并且顶层 + 符号更改为 - 但如何在菜单关闭时将其更改回 +再次。我想我想添加一个均匀的滑动切换向上运动?但不知道如何。我尝试使用 if 语句来更改它,但无法让它工作,这里是我最接近我想要的工作方式的版本:

 function initMenu() {
 $('#menu ul:not(.active)').hide();
 $('#menu li a.top_a').click(
 function(e) {
    e.preventDefault();
    $(this).next().slideToggle('normal');
    $(this).siblings('.plus').replaceWith(' - ');   
   }
 );
} 

Iv created a basic vertical sliding menu which can be seen here on the left vertical grey bar:

http://www.switchcreative.co.uk/tuckagefinewines/

When you click on a country the sub-menu items slide down and the top level + sign changes to a - but how to I change it back to + when the menu is closed again. I guess I want to add an even to slidetoggles upward motion? but not sure how. I tried using an if statement to change it but couldn't get it to work here is my closest version to working the way Id like:

 function initMenu() {
 $('#menu ul:not(.active)').hide();
 $('#menu li a.top_a').click(
 function(e) {
    e.preventDefault();
    $(this).next().slideToggle('normal');
    $(this).siblings('.plus').replaceWith(' - ');   
   }
 );
} 

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

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

发布评论

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

评论(3

非要怀念 2024-12-20 01:34:42

您要删除 span.plus 尝试设置如下文本:

if($(this).siblings('.plus').text() == '+')
    $(this).siblings('.plus').text('-');
else
    $(this).siblings('.plus').text('+');

you're removing the span.plus try setting the text like this:

if($(this).siblings('.plus').text() == '+')
    $(this).siblings('.plus').text('-');
else
    $(this).siblings('.plus').text('+');
暮光沉寂 2024-12-20 01:34:42

您可以检查每个子元素的 CSS 高度。如果它大于 0,您的 .plus-element 应再次替换为“+”。 SlideToggle() 除了改变 en 元素的高度之外什么也不做。您可以在此处阅读相关内容

You could check the CSS height of every sub-element. If it's greater than 0, your .plus-element should replaced by a "+" again. slideToggle() does nothing else than changing the height of en element. You can read about it here

似梦非梦 2024-12-20 01:34:42

将此行:更改

$(this).siblings('.plus').replaceWith(' - ');

为:

if($(this).siblings('.plus').length > 0){
    $(this).siblings('.plus').removeClass('.plus').addClass('.minus').text(' - ');
}
else {
    $(this).siblings('.minus').removeClass('.minus').addClass('.plus').text(' + ');
}

或者甚至有两个跨度:

<span class="plus"> + </span><span class="minus"> - </span>

.plus 可见,.minusdisplay: none;。然后,当您切换下一个元素时,只需执行以下操作:

$(this).siblings('.plus, .minus').toggle();

Change this line:

$(this).siblings('.plus').replaceWith(' - ');

to:

if($(this).siblings('.plus').length > 0){
    $(this).siblings('.plus').removeClass('.plus').addClass('.minus').text(' - ');
}
else {
    $(this).siblings('.minus').removeClass('.minus').addClass('.plus').text(' + ');
}

Or even have two spans:

<span class="plus"> + </span><span class="minus"> - </span>

.plus is visible and .minus is display: none;. Then when you toggle the next element just do:

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