0

我正在尝试通过单击该面板中的链接来关闭画布外导航面板。您可以使用汉堡按钮打开/关闭面板,并在单击页面上的任意位置时将其关闭。

见:http ://whyyouthinking.com/xindex.html#what

我到了它可以工作的地步,但汉堡必须点击两次才能再次工作。

$(document).ready(function () {
  "use strict";
  $('.panel ul li a').on("click", function () {
     $('.menu-link').removeClass("active");
     $('.panel').animate({left: '-=250'});
  });
});

我已经解决了这个问题:

  $(document).ready(function () {
    "use strict";
    $('.panel ul li a').on("click", function () {
       $('.menu-link').removeClass("active");
       $('.panel').animate({left: '-=250'});
     });
    $('.panel ul li a').on('click', function(e) {
       e.preventDefault();
       $('.menu-link').click();         
    });
  });

现在我有问题 e.preventDefault(); 当您单击面板中的链接时,也会停止我的“滚动到”功能。有没有办法只针对.menu-link?

4

1 回答 1

0

这里也滚动到注册到“#menu”选择器的事件,因此当用户单击面板列表锚标记时,它会滚动到目标偏移量,以及由于 $('.menu-link') 而导致的#menu 目标偏移量。点击();。

因此将页面滚动动画限制为#menu 选择器。添加了#menu 选择器条件检查:if(target.selector != "#menu" && target.length).

/*Scroll to function*/
$(function() {
    "use strict";
    $('a[href*="#"]:not([href="#"])').click(function() {
        if (location.pathname.replace(/^\//, '') === this.pathname.replace(/^\//, '') && location.hostname === this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.selector != "#menu" && target.length) {
                $('html, body').animate({
                    scrollTop: target.offset().top - 60
                }, 1000);
                return false;
            }
        }
    });
});

如果您取消注册 #menu 选择器的事件会很好,请检查:$('a[href*="#"]:not([href="#"]):not([href="#menu"])').click(function(e) {...}

于 2016-08-14T19:47:48.170 回答