简体   繁体   English

jQuery show hide在大屏幕上无法正常工作。 而根本不在移动设备上工作

[英]Jquery show hide not working properly on large screens. and not at all working on mobile devices

I am using show and hide to slide up and down my menu items on mouse click. 我使用显示和隐藏在鼠标单击时上下滑动菜单项。 I have 2 issues in it. 我有2个问题。 Apparently they are working fine. 显然他们工作正常。 But when i did some serious testing by clicking every parent list item again and again i found that they have click issue , sometimes they expand and sometimes it takes two clicks to work. 但是,当我通过一次又一次地单击每个父级列表项进行了一些认真的测试时,我发现它们存在单击问题,有时它们会扩展,有时需要两次单击才能起作用。 This is my first problem. 这是我的第一个问题。

Second problem is that they are not working on mobile devices at all . 第二个问题是它们根本不在移动设备上运行

Here is a fiddle Fiddle 这是一个小提琴

Html HTML

<div class="mega-col col-xs-12 col-sm-12 col-md-4" data-type="menu">
<div class="mega-col-inner">
    <ul>
        <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="menu-title">Massachusetts Stores</span><b class="caret"></b></a>
            <div class="dropdown-mega level2">
                <div class="dropdown-menu-inner">
                    <div class="row">
                        <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                            <div class="mega-col-inner">
                                <ul>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=24"><span class="menu-title">Burlington Mall, MA</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=25"><span class="menu-title">Burlington Mall, MA - Cart</span></a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
        <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="menu-title">New Jersey Stores</span><b class="caret"></b></a>
            <div class="dropdown-mega level2">
                <div class="dropdown-menu-inner">
                    <div class="row">
                        <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                            <div class="mega-col-inner">
                                <ul>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=26"><span class="menu-title">Brunswick Square Mall, NJ</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=30"><span class="menu-title">Garden State Plaza, NJ</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=27"><span class="menu-title">Menlo Park Mall, NJ</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=29"><span class="menu-title">Ocean County Mall, NJ</span></a>
                                    </li>
                                    <li class=" "><a href=""><span class="menu-title">Rockaway Townsquare, NJ</span></a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
        <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="menu-title">New York Stores</span><b class="caret"></b></a>
            <div class="dropdown-mega level2">
                <div class="dropdown-menu-inner">
                    <div class="row">
                        <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                            <div class="mega-col-inner">
                                <ul>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=31"><span class="menu-title">Galleria at White Plains, NY</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=42"><span class="menu-title">Manhattan, NY-Toys 'R' Us </span></a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
        <li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="menu-title">North Carolina Stores</span><b class="caret"></b></a>
            <div class="dropdown-mega level2">
                <div class="dropdown-menu-inner">
                    <div class="row">
                        <div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
                            <div class="mega-col-inner">
                                <ul>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=32"><span class="menu-title">CrabTree Valley, NC</span></a>
                                    </li>
                                    <li class=" "><a href="index.php?route=common/location_details&amp;loc_id=2"><span class="menu-title">Fayetteville, NC</span></a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </li>
    </ul>
</div>

JS: JS:

  $("li.parent.dropdown-submenu.mega-group > a").on('click', function(event) {
event.preventDefault();
$(this).toggleClass('active');
$('.dropdown-mega.level2').hide();
if($(this).hasClass('active'))
    $(this).closest('.parent').find('.dropdown-mega.level2').show();
});

Css CSS

li.parent.dropdown-submenu.mega-group .dropdown-mega.level2 {
display: none;
}
li
 {
padding:10px;
position: relative;
margin:auto;
}

Try this code 试试这个代码

$("li.parent.dropdown-submenu.mega-group > a").on('click', function(event) {
    $('.dropdown-mega.level2').hide();
    $('li.parent.dropdown-submenu.mega-group > a').removeClass("active")
    $(this).toggleClass('active');
    $(this).closest('.parent').find('.dropdown-mega.level2').show();
});

First you have to hide all dropdowns, then show actual dropdown 首先,您必须隐藏所有下拉菜单,然后显示实际下拉菜单

$("li.parent.dropdown-submenu.mega-group > a").on('click', function(event) {
    event.preventDefault();
    $('.dropdown-mega.level2').hide();
    if($(this).hasClass('active')) {
        $(this).removeClass('active');
    } else {
        $("li.parent.dropdown-submenu.mega-group > a").removeClass('active');
        $(this).addClass('active');
        $(this).closest('.parent').find('.dropdown-mega.level2').show();
    }
    return false;
});

Your updated JSFiddle 您更新的JSFiddle

and about that mobile issue 关于那个手机问题

you have to move this 你必须移动

#li_menu169 li.parent.dropdown-submenu.mega-group .dropdown-mega.level2 {
    display: none;
}

out of @media (min-width: 1200px), because this rule will apply only to screens bigger than 1200px. @media(最小宽度:1200px)之外,因为此规则仅适用于大于1200px的屏幕。 You probably want it to be applied to all screen sizes so your dropdown is hidden when website is loaded. 您可能希望将其应用于所有屏幕尺寸,以便在加载网站时隐藏下拉菜单。 And there is probably some problem with event.preventDefault(); 而且event.preventDefault();可能存在一些问题; on mobile browser so I've edited my JSFiddle and added return false; 在移动浏览器上,所以我编辑了JSFiddle并添加了return false; to the end, it should do the trick 到最后,它应该可以解决问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM