【问题标题】:jQuery double dropdown Navigation IssuejQuery双下拉导航问题
【发布时间】:2016-01-13 14:36:03
【问题描述】:

我已经为 wordpress 多站点创建了一个 jQuery 下拉导航,导航效果很好,但是一旦发生了一次下拉,并且用户单击导航中的另一个下拉链接,现有的下拉仍然显示为所以:Double Drop Down Occurence

当点击导航中的另一个项目时,我想删除下拉列表,以免出现两次,这样一次只显示一个,如下所示:

Single dropdown

这是构成导航的代码:

<script>
jQuery(document).ready(function( $ ) {

jQuery( ".divisionslink" ).click(function() {
jQuery( ".divisions-submenu" ).toggleClass( "heightnav" );
});	
jQuery( ".aboutlink" ).click(function() {
jQuery( ".about-submenu" ).toggleClass( "heightnav" );
});
jQuery( ".productlinks" ).click(function() {
jQuery( ".products-submenu" ).toggleClass( "heightnav" );
});
jQuery( ".serviceslink" ).click(function() {
jQuery( ".services-submenu" ).toggleClass( "heightnav" );
});

});
</script>
<!-- Dropdown Script -->
.navigation-desktop--submenu {
    // border-bottom: 2px solid $color-dufaylite;
    &.heightnav {
        height: 0;
        @include single-transition(all, 0.5s);
    }
    display: none;
    @include contrasted($color-grey-medium, $color-navy-light, $color-navy-dark);
    overflow: auto;
    @media #{$medium-up} {
        display: flex;
        height: 3rem;
        @include single-transition(all, 0.5s);
    }
    align-items: center;
    justify-content: space-between;
    font-weight: 300;
    ul {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        flex-wrap: wrap;
        margin: 0;
        li {
            display: flex;
            button {
                background-color: inherit;
                color: inherit;
                border-radius: 0;
            }
            a, button {
                font-size: 14px;
                text-decoration: none;
                padding: 0.50rem;
                color: $color-navy-light;
                @include single-transition(color, 0.125s);
                &:hover, &:focus {
                    color: white;
                    @include single-transition(color, 0.125s);
                }
            }
        }
        &.navigation {
            li {
                border-left: 1px solid;
            }
        }
    }
}
<!-- Main Navigation Link -->
<li class="divisionslink"><a href="#">Divisions<img style="padding-left: 5px;" src="<?php echo get_template_directory_uri(); ?>/images/icons/navigation/icon-dropdown.png" /></a></li>

<li class="aboutlink"><a href="#">About<img src="<?php echo get_template_directory_uri(); ?>/images/icons/navigation/icon-dropdown.png" /></a></li>
					
<!-- Dropdown Submenu -->
<section class="about-submenu navigation-desktop--submenu heightnav">
	<div class="row submenu">
		<div class="small-12 columns">
			<nav class="desktop-submenu desktop-submenu--product">
				<ul>
					<?php if(get_page_by_title('About')) : ?>
					<li><a href="<?php echo get_permalink( get_page_by_title( 'About' ) ) ?>">Overview</a></li>
					<?php endif;?>
					<?php if ($currentblogname === 'dufaylite') : ?>
					<li><a href="<?php echo network_site_url(); ?>history-of-honeycomb/">History of Honeycomb</a></li>
					<li><a href="<?php echo network_site_url(); ?>our-people/">Our People</a></li>
					<li><a href="<?php echo network_site_url(); ?>testimonials/">Testimonials</a></li>
					<li><a href="<?php echo network_site_url(); ?>careers/">Careers</a></li>
					<?php elseif ($currentblogname === 'clayboard') : ?>
					<li><a href="<?php echo get_permalink( get_page_by_title( 'Company History' ) ) ?>">Company History</a></li>
					<li><a href="<?php echo get_permalink( get_page_by_title( 'Testimonials' ) ) ?>">Testimonials</a></li>
					<?php elseif ($currentblogname === 'envirolite') : ?>
					<li><a href="<?php echo get_permalink( get_page_by_title( 'Our Story' ) ) ?>">Our Story</a></li>
					<li><a href="<?php echo get_permalink( get_page_by_title( 'Testimonials' ) ) ?>">Testimonials</a></li>
					<?php elseif ($currentblogname === 'ultraboard') : ?>
					<!-- <li><a href="<?php echo get_permalink( get_page_by_title( 'Our People' ) ) ?>">Our People</a></li> -->
					<li><a href="<?php echo get_permalink( get_page_by_title( 'Testimonials' ) ) ?>">Testimonials</a></li>
				</ul>
				<?php else : ?>
				<?php endif; ?>
			</nav>
		</div>
	</div>
</section>

目的是在单击另一个项目并且子菜单下拉时从上一个项目中删除该类,以避免发生这种双重问题,有人可以建议吗?

谢谢,

【问题讨论】:

    标签: jquery html css wordpress navigation


    【解决方案1】:

    您需要在单击任何菜单项时从所有其他元素中删除类.heightnav,然后将该类应用于单击的菜单项。

    jQuery( ".divisionslink" ).click(function() {
          jQuery( "section.navigation-desktop--submenu.heightnav" ).removeClass( "heightnav" );
          jQuery( ".divisions-submenu" ).toggleClass( "heightnav" );
    }); 
    

    这是假设每个下拉子菜单 &lt;section&gt; 都有类 .navigation-desktop--submenu

    【讨论】:

    • 感谢您的快速回复。我刚刚尝试过,但是现在打开了每个具有 .navigation-desktop--submenu 类的下拉子菜单
    • @Cansy 你能发布一个例子的链接吗?也许是一个 jsfiddle?
    • 嗨史蒂夫,jsfiddle.net/bnn5y81y 是 JS 小提琴,要在网站上查看问题,您可以在此处查看:46.101.42.40
    • @Cansy 我已经更新了你的 jsfiddle。似乎正在工作。在 HTML 中,我从 &lt;sections&gt; 中删除了 heightnav 类(它们都在页面加载时应用了该类)。我还调整了 CSS,当然还有 jQuery。 jsfiddle.net/bnn5y81y/17
    • 谢谢,它是如此接近,虽然现在页面加载,下拉菜单已经显示,并且点击 about 链接时会显示部门子菜单,点击 about 时会显示 about 子菜单部门链接。
    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多