使用Sdr创建多级导航

时间:2014-08-06 11:06:58

标签: responsive-design navigation sidr

我使用Sidr创建了一个多级(嵌套)菜单。我的目标是实现响应式菜单,例如:http://www.currys.co.uk

我已经让第二级导航运行良好,但是还没有能够进一步发挥作用。

HTML:

    <nav class="nav">
        <ul class="menu">
            <li class="left-menu"><a href="/link1">Level 1 Example</a>
                <ul class="subnav-l2">
                    <li class="close"><a href="#" onclick="$.sidr('close', 'sidr-left');return false;">Close Menu</a></li>
                    <li><a href="#">Level 2 Example</a></li>
                    <li><a href="#">Level 2 Example</a></li>
                    <li><a href="#">Level 2 Example</a></li>

                    <li class="left-menu-l3"><a href="#">Level 3 Example</a>
                        <ul class="subnav-l3">
                            <li><a href="#">Link Example</a></li>
                            <li><a href="#">Link Example 2</a></li>
                            <li><a href="#">Link Example 3</a></li>
                            <li><a href="#">Link Example 4</a></li>
                        </ul>   
                    </li>   
                    <li><a href="#">Official Report</a></li>

                </ul>               
            </li>
            <li><a href="#">Level 1 Example</a>

        </ul>
    </nav>

JS:

$('.left-menu').sidr({
  name: 'sidr-left',
  side: 'left', // By default
  source: '.subnav-l2'
});

$('.left-menu-l3').sidr({
  name: 'sidr-left2',
  side: 'left', // By default
  source: '.subnav-l3'
});

1 个答案:

答案 0 :(得分:0)

这应该在你的页脚中。希望这会有所帮助。

<script src="http://yoursite.domain.../jquery.sidr.min.js"></script>

<script>
jQuery('#responsive-menu-button').sidr({
name: 'sidr-main',
source: '.menu-main-nav-container'
});

jQuery( window ).load(function() {
if(jQuery("#sidr-main").length !== 0) {        
    jQuery(".sidr-class-sub-menu").hide();      
    jQuery( "li.sidr-class-menu-item ul.sidr-class-sub-menu" ).each(function() {
    jQuery( this ).after("<div class='lnk-plus'>+</div>");
    });

    jQuery( ".lnk-plus" ).toggle(function() {
        var id1= jQuery( this ).parent().attr("id");
        jQuery("#" + id1 + " ul.sidr-class-sub-menu").show();
        jQuery("#" + id1 + " .sidr-class-menu-item-has-children ul").hide();   
        jQuery( this ).html("-");
        }, function() {
        var id1= jQuery( this ).parent().attr("id");
        jQuery("#" + id1 + " ul.sidr-class-sub-menu").hide();
        jQuery( this ).html("+");
        });
        }
    });
</script>

请注意jQuery(".sidr-class-sub-menu").hide();所在的位置。

对于iPad和iPhone,您必须使用稍有不同的单独代码段,它使用.bind和touchstart事件来使其正常工作。

<script>
jQuery(document).ready(function($){
        var deviceAgent = navigator.userAgent.toLowerCase();
        var agentID = deviceAgent.match(/(ipad|iphone)/);
        if (agentID) {      
            jQuery('#responsive-menu-button').sidr({
                name: 'sidr-main',
                source: '.menu-main-nav-container'
            });

            if(jQuery("#sidr-main").length !== 0) {
                jQuery(window).bind('touchstart click', function(){ 
                        //return false
                });

                jQuery( ".lnk-plus" ).toggle(function() {
                var id1= jQuery( this ).parent().attr("id");
                jQuery("#" + id1 + " ul.sidr-class-sub-menu").show("slow");
                jQuery("#" + id1 + " .sidr-class-menu-item-has-children ul").hide("slow");   
                jQuery( this ).html("-");
                }, function() {
                var id1= jQuery( this ).parent().attr("id");
                jQuery("#" + id1 + " ul.sidr-class-sub-menu").hide("slow");
                jQuery( this ).html("+");
                }); 

            }                   
        }
});
</script>