[英]Window.resize doesn't work unless page is reloaded
我有这种响应式布局。 我要实现的是在“桌面”大小下,一旦单击菜单链接,它将导航到页面的该部分。 我希望“移动”尺寸也一样。 同样,一旦单击菜单链接,菜单就会向上滑动。
我可以同时使用这两种方法,但是仅在重新加载页面时才能使用。 总结一下,这是问题所在:
<div id="head" class="clearfix">
<a href="#" title="Pull Menu" id="pull">Pull Menu</a>
<div class="menu-wrap clearfix">
<div class="nav">
<ul>
<li><a href="#test1" title="test1">test1</a></li>
<li><a href="#test2" title="test2">test2</a></li>
<li><a href="#test3" title="test3">test3</a></li>
</ul>
</div>
</div>
</div>
<div id="test1" class="section">Test1</div>
<div id="test2" class="section">Test2</div>
<div id="test3" class="section">Test3</div>
var respMenu = function(event) {
var menu = $('.menu-wrap');
if ($(window).width() < 501) {
$("#pull").on('click', function() {
menu.slideToggle('slow');
});
$(".nav ul li a").click(function() {
menu.slideUp('slow');
});
}
else{
}
return false;
event.preventDefault();
};
var onClick = function() {
$('a').bind('click',function(event){
var $anchor = $(this);
if ($(window).width() > 500) {
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top - 90 }, 1000,'easeInOutExpo');
}
else{
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top - 50 }, 1000,'easeInOutExpo');
}
event.preventDefault();
});
};
$(window).load(function(){
respMenu();
onClick();
});
$(window).resize(function(){
respMenu();
onClick();
});
问题是,每次调整window
大小时,您都将新的处理程序绑定到click事件,而从未取消绑定它们。 因此,处理程序的数量不断增加,这意味着在您重新调整窗口大小后,单击一次会触发多个事件。
因此,您可以使用unbind
或off
方法来取消绑定处理程序。
在这里看看: http : //jsfiddle.net/yohanrobert/p987prdd/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.