Закрыть раздел, а не всю навигацию

Привет, я создал эту навигацию в jquery, но я начинаю путать себя с процессом открытия и закрытия навигации. Если вы перейдете сюда: http://hutchcreative.co.uk/rod/, вы увидите работающий демо.

Если вы нажмете на значок меню (вверху справа), а затем на контакт, вы увидите, что значок меню изменится на X. Когда вы нажимаете X, я бы хотел, чтобы он просто закрывал раздел контактов, а не всю навигацию.

Я думаю, что основная область, которую нужно изменить, - это этот раздел моего jquery:

$("#menuIcon").click(function ( event ) {
    event.preventDefault();
    $('#contactWrapper').hide();
    $('#menuIcon').removeClass('closeIcon');
    $("#navigationWrapper").removeClass('whiteSection');
    if($('#contactWrapper').is(":visible")) {  $('#contactWrapper').hide(); }
});

Здесь все мои jquery

$('#menuIcon').toggle(function(){
       $('#navigationWrapper ul').hide();
       $('#navigationWrapper ul').show();
       $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.3)");
},function(){
       $('#navigationWrapper ul').show();
       $('#navigationWrapper ul').hide();
       $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.0)");
});

$('#menu-item-59').click(function(){
    if($("#navigationWrapper").hasClass('whiteSection')){
        $('#contactWrapper').show();
        $('#contactWrapper').hide();
        $('#menuIcon').removeClass('closeIcon');
        $("#navigationWrapper").removeClass('whiteSection');
        $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.3)");
    }else{
        $('#contactWrapper').hide();
        $('#contactWrapper').show();
        $("#navigationWrapper").addClass('whiteSection');
        $('#menuIcon').addClass('closeIcon');
        $("#navigationWrapper").css("background-color", "rgba(255,255,255,1)");
    }
});

$("#menuIcon").click(function ( event ) {
    event.preventDefault();
    $('#contactWrapper').hide();
    $('#menuIcon').removeClass('closeIcon');
    $("#navigationWrapper").removeClass('whiteSection');
    if($('#contactWrapper').is(":visible")) {  $('#contactWrapper').hide(); }
});

Вот мой html:

<nav id="navigationWrapper" class="nav">
    <div class="container">
        <div class="row">
            <div class="span5">
                <div id="logo"></div>
            </div>
            <div class="span7">
                <div id="menuIcon"></div>
                <ul>

                    <?php wp_nav_menu( array( 'theme_location' => 'primary', 'container' => false, 'menu_class' => 'menu', 'menu_id' => 'menu', 'depth' => 1, 'fallback_cb' => '', 'items_wrap' => '%3$s' ) ); ?>

                    <?php get_template_part( 'part', 'social' ); ?>

                </ul>
            </div>
        </div>
    </div>
</nav>

<div id="contactWrapper" >
    <div class="container">
        <div class="row">
            <?php
                    // query for the about page
                    $your_query = new WP_Query( 'pagename=contact' );
                    // "loop" through query (even though it's just one page) 
                    while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
                        <div class="span12">
                            <h3><?php the_title(); ?></h3>
                        </div>
                        <div class="span6">
                            <h4><?php the_field('sub_heading'); ?></h4>
                            <?php the_content(); ?>
                        </div>
                        <div  class="span5 offset1">
                            <div id="emailAdd">
                                <a href="mailto:<?php the_field('email_address'); ?>"><?php the_field('email_address'); ?></a>
                            </div>
                            <div id="phoneAdd">
                                <?php the_field('phone_number'); ?>
                            </div>
                        </div>

                <?php endwhile;
                // reset post data (important!)
                wp_reset_postdata();
                ?>
        </div>
    </div>
</div>

person Megan    schedule 03.08.2013    source источник
comment
почему вы прячете и тут же снова показываете какие-то элементы?   -  person Omar    schedule 03.08.2013


Ответы (1)


У вас есть обработчик события переключения для #menuIcon, который закрывает оболочку навигации; возможно, вы можете проверить класс closeIcon и не закрывать его, если он существует:

$('#menuIcon').toggle(function(){
   $('#navigationWrapper ul').hide();
   $('#navigationWrapper ul').show();
   $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.3)");
 },function(){
 if (!$(this).hasClass('closeIcon')) {
   $('#navigationWrapper ul').show();
   $('#navigationWrapper ul').hide();
   $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.0)");
}
});
person Herman Tran    schedule 03.08.2013
comment
Спасибо, это сработало, он больше не закрывает всю навигацию, но оставляет фон белым на навигации, когда контактная секция закрыта. Я не уверен, какой раздел мне нужно изменить, чтобы заставить его вернуться в темноту? Вы можете снова увидеть демоверсию в живой версии. Благодарность! - person Megan; 03.08.2013