jquery 缓存问题,求解决,谢谢。
首先获取浏览器窗口的宽度,根据这个宽度给div赋值,但是问题是,在线上刷新后每次都要计算宽带并赋值,所以会出现抖动问题我觉得这应该可以用缓存来解决,时间比较紧迫,我现在正...
首先获取浏览器窗口的宽度,根据这个宽度给div赋值,但是问题是,在线上刷新后每次都要计算宽带并赋值,所以会出现抖动问题
我觉得这应该可以用缓存来解决,时间比较紧迫,我现在正在解决,希望有高手帮我解决一下,谢谢了!
function change(){
var wr =$(window).width(); //wr是浏览器的宽
if(wr>0 && wr<1228){
$('div').width('980');
}else if(wr>1228 && wr<1476){
$('.dna_head,#content,#footer').width('1228');
}else if(wr>1476 && wr <1652){
$('div').width('1476');
}else if(wr>1652 && wr <1888){
$('div').width('1652');
}else if(wr>1724){
$('div').width('1724');
}
}
//运行change()赋值
change();
//每次窗口改变大小,运行change()
$(window).resize(function(){
change();
}); 展开
我觉得这应该可以用缓存来解决,时间比较紧迫,我现在正在解决,希望有高手帮我解决一下,谢谢了!
function change(){
var wr =$(window).width(); //wr是浏览器的宽
if(wr>0 && wr<1228){
$('div').width('980');
}else if(wr>1228 && wr<1476){
$('.dna_head,#content,#footer').width('1228');
}else if(wr>1476 && wr <1652){
$('div').width('1476');
}else if(wr>1652 && wr <1888){
$('div').width('1652');
}else if(wr>1724){
$('div').width('1724');
}
}
//运行change()赋值
change();
//每次窗口改变大小,运行change()
$(window).resize(function(){
change();
}); 展开
展开全部
问题出在resize函数上,你可以尝试减缓它的执行次数,就不会那么抖动了:
//...以上接你的代码
change();
var windowTimer = null;
$(window).resize(function(){
clearTimeout(windowTimer);
windowTimer =setTimeout(change,200);
})
//...以上接你的代码
change();
var windowTimer = null;
$(window).resize(function(){
clearTimeout(windowTimer);
windowTimer =setTimeout(change,200);
})
更多追问追答
追问
不是的,这个计算量并不是很大,不会因为resize出现抖动; 主要是因为DIV没有宽,加载JS后计算出的宽赋给DIV后,DIV才有的宽,所以出现了抖动 没刷新一次页面的时候执行一次这个函数 所以我的意思是用执行一次后,把DIV的宽缓存起来,就不执行这个函数了(当窗口改变大小的时候再执行)
追答
哦,我明白了,是因为jquery的ready事件触发的比较迟造成的;
你可以试着用原生的方法在head部分就执行这个判断,这样就不会出现抖动了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询