【问题标题】:jquery navigation problems, having to double clickjquery导航问题,不得不双击
【发布时间】:2013-07-22 20:30:43
【问题描述】:

我有一个导航,你可以在这里看到:http://hutchcreative.co.uk/rod/

如果您单击菜单图标(右上角),它会显示深色导航菜单。如果您单击联系我们,则会显示白色的联系我们部分。然后单击菜单图标关闭所有内容。如果您然后再次单击菜单图标,它会像以前一样打开深色导航,但如果您单击联系人,它不会打开。您必须再次单击它才能打开白色联系人部分。有谁知道如何解决这个问题?

这是我的 jquery:

jQuery(function($) {    
$('#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-56').toggle(function(){
       $('#contactWrapper').hide();
       $('#contactWrapper').show();
       $("#navigationWrapper").addClass('whiteSection');
       $("#navigationWrapper").css("background-color", "rgba(255,255,255,1)");
},function(){
       $('#contactWrapper').show();
       $('#contactWrapper').hide();
       $("#navigationWrapper").removeClass('whiteSection');
       $("#navigationWrapper").css("background-color", "rgba(0,0,0,0.3)");
});

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

});

这是我的html

<nav id="navigationWrapper">
    <div class="container">
        <div class="row">
            <div class="span6">
                <div id="logo"></div>
            </div>
            <div class="span6">
                <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="span6">
                            <?php the_title(); ?>
                            <?php the_content(); ?>
                        </div>
                        <div class="span6">
                            <?php the_field('email_address'); ?>
                        </div>
                <?php endwhile;
                // reset post data (important!)
                wp_reset_postdata();
                ?>
        </div>
    </div>
</div>

【问题讨论】:

  • 如果您发布一个指向仅包含相关代码的小提琴的链接而不是大量 HTML 和指向您网站的链接,那将会更有帮助。

标签: jquery navigation click nav


【解决方案1】:

那是因为您使用的是.toggle() event(顺便说一句,它已被弃用)。单击菜单不是通常隐藏联系人菜单的切换功能。

试试这个:

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

它是关闭还是打开菜单取决于它是否有类,但我无法测试它。

当然可以优化代码,但这不是真正的问题!

【讨论】:

  • 是的,自 1.8 起已弃用,在 1.9 中删除 api.jquery.com/toggle-event 但是他使用的是 1.8.3,所以它仍然在那里。
  • 非常感谢您!您是否有可能分享一种更好的编码方式,以便对其进行优化?抱歉,我对 jquery 还是很陌生。谢谢!
  • pastebin.com/pseqdG5K在1分钟内搞定,可能是逆变器(如果是,请删除hasClass之前的!
猜你喜欢
  • 1970-01-01
  • 2016-01-13
  • 2020-11-25
  • 2016-01-06
  • 1970-01-01
  • 2016-12-31
  • 2012-01-07
  • 2012-03-18
  • 2011-09-03
相关资源
最近更新 更多