2

jQuery.mmenu プラグインを使用しようとしています。メニューに複数の項目があります。ページ内のアンカータグへのリンクもあれば、他のページへのリンクもあります。アンカーへのリンクを初めてクリックすると、ページがアンカーに移動し、メニューが閉じます。しかし、もう一度メニューを開いて別のアンカーへの別のリンクをクリックすると、ページは移動しますが、メニューは閉じません。私は箱から出してすぐにコードを使用しており、何も変更していません。本当に単純なものが欠けていると確信しています。どんな助けでも大歓迎です

メニュー

<nav id="menu">
  <ul>
    <li><a href="index.html#how-it-works">How it Works</a></li>
    <li><a href="index.html#businesses">Affiliated Businesses</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="faqs.html">FAQs</a></li>
     <li><a href="contact-us.html">Contact Us</a></li>
    <li><a href="jobs.html">Jobs</a></li>
  </ul>
</nav>

JS

<script type="text/javascript">
  $(function() {
    $("nav#menu").mmenu({
   classes: "mm-slide"
});
  });
</script>
4

2 に答える 2

6

これは現在、プラグインに組み込まれています (v5.6.6 2016.07.05)。#text を使用して href を適切にサポートするには (たとえば、単一ページのアプリで)、プラグインを有効にするときに次のオプションを使用します。

onClick : {
  close          : true,
  preventDefault : false,
}

次のように:

$("#my-menu").mmenu({
  "slidingSubmenus": false,
  onClick : {
    close          : true,
    preventDefault : false,
  }
});
于 2016-07-05T20:07:40.430 に答える
2

まず、ページ上のアンカーから index.html を取り除きます。そう;

<li><a href="#how-it-works">How it Works</a></li>
<li><a href="#businesses">Affiliated Businesses</a></li>

おそらくmmenuはオンページリンク用に更新されていますが、最近行ったとき、「すぐに使える」とはこのコードを使用することを意味していました(デモコードの例の1つ-onepage.htmlにあります)。

var $menu = $('nav#menu'),
    $html = $('html, body');

$menu.mmenu({
  classes: "mm-slide"
});

$menu.find( 'li > a' ).on(
    'click',
    function()
    {
        var href = $(this).attr( 'href' );

        //  if the clicked link is linked to an anchor, scroll the page to that anchor 
        if ( href.slice( 0, 1 ) == '#' )
        {
            $menu.one(
                'closed.mm',
                function()
                {
                    setTimeout(
                        function()
                        {
                            $html.animate({
                                scrollTop: $( href ).offset().top
                            }); 
                        }, 10
                    );  
                }
            );                      
        }
    }
);

if ( href.slice( 0, 1 ) == '#' )リンクがアンカーか別のページへのリンクかを判断するために使用します。したがって、これらのリンクで index.html を取り除くことをお勧めする理由です。

于 2014-05-28T18:57:45.343 に答える