【发布时间】:2016-06-05 19:32:25
【问题描述】:
jQuery resize 函数不起作用。我想在 767 宽度的设备中提供自定义滚动,但它不起作用。一般767以上的设备滚动都可以。我该如何解决?如果我只用$(window).resize 函数给出一个条件,那么它也可以工作,但是当我给else 条件时,它又不能工作。
var about_us = $('#aboutus_area').offset();
var testimonial = $('#testimonial').offset();
var contact = $('#contact').offset();
$('.aboutus_area').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : about_us.top },500);
});
$('.testimonial').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : testimonial.top },500);
});
$('.contact').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : contact.top },500);
});
$(window).resize(function(){
if( $(window).width()<768 ){
navbar = $('.navbar-collapse').height();
var about_us = $('#aboutus_area').offset().top+navbar;
var testimonial = $('#testimonial').offset().top+navbar;
var contact = $('#contact').offset().top+navbar;
$('.aboutus_area').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : about_us },500);
});
$('.testimonial').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : testimonial },500);
});
$('.contact').on('click',function(e){
e.preventDefault();
$('html,body').animate({ scrollTop : contact },500);
});
}
});
【问题讨论】:
-
不要在事件处理程序中绑定事件处理程序。当窗口调整大小时,
resize事件会触发多次,可能是数千次,并且每次都会绑定一个新的事件处理程序来单击元素。