2016-08-14 79 views
0

我试图通过单击该面板中的链接来关闭关闭画布导航面板。您可以用汉堡按钮打开/关闭面板,并在您点击页面上的任何位置时将其关闭。使用e.preventDefault();以防止双击链接

请参见: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();当您点击面板中的链接时,也会停止我的'scrollto'功能。有没有只针对.menu-link的方法?

+2

你就错了,你需要弄清楚为什么* *它必须被点击两次,修复它,而不是通过触发点击来破解它。 – adeneo

回答

0

这里滚动到注册到“#menu”选择器的事件,所以当用户点击面板列表定位标记时,滚动到目标偏移量,以及由于$('。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) {...}

+0

非常感谢你,我真的没有希望能够解决这个问题。好事是当有经验的程序员向我展示工作方式时,我总是在学习。 –

+0

我很高兴,我能够帮助。 – nseepana