Jquery—;一个函数如何给出两个不同的结果?

Jquery—;一个函数如何给出两个不同的结果?,jquery,html,function,Jquery,Html,Function,我有一个调整页面缩略图大小的功能: function adjustThumbs(){ if ($(window).width()<900) { var w = ($("#wrapper").width())/2; } else if ($(window).width()>900 && $(window).width()<1100){ var w = ($("#wrapper").width())/3; } else if ($(window)

我有一个调整页面缩略图大小的功能:

function adjustThumbs(){
if ($(window).width()<900) {
    var w = ($("#wrapper").width())/2;
} 
else if ($(window).width()>900 && $(window).width()<1100){
    var w = ($("#wrapper").width())/3;
} 
else if ($(window).width()>1100 && $(window).width()<1680){
var w = ($("#wrapper").width())/4;
}
else if ($(window).width()>1680 && $(window).width()<2300){
var w = ($("#wrapper").width())/5;
}
else if ($(window).width()>2300){
var w = ($("#wrapper").width())/6;
}
$(".tableMaker, .imgContainer").each(function(){ $(this).css("width", w); });
$(".debug").text("debug = "+w);
}   
功能调整拇指(){
如果($(窗口).width()900&$(窗口).width()1100&$(窗口).width()1680&$(窗口).width()2300){
var w=($(“#包装器”).width())/6;
}
$(“.tableMaker.imgContainer”).each(function(){$(this.css(“width”,w);});
$(“.debug”).text(“debug=“+w”);
}   
加载页面后,我将启动该函数

它没有做它应该做的

但在“调整大小”上,它会吗

我在页面的中上部有一个debug div,它告诉我在页面加载时,如果浏览器是全屏的(在我的macbook pro上是1440宽),w=335,但如果我只移动一个像素,它会跳到331.25,这是一个3.75px的差异

关键是。。。当我第二次调用该函数时,它确实工作了。。。那么,为什么第一次不起作用呢

我的脚本都在页面底部,所有内容都已准备就绪


谢谢

一般来说,我不会分配部分像素,而是事先将它们四舍五入

在代码中发现错误,但很可能与此无关。如果窗口宽度恰好为900、1100、1680或2300像素,则始终选中“”,因此w将是未定义的

另一个注意事项:只计算$(window).width()一次并将其存储在变量中。没有必要(而且很重)叫它8次(更糟的情况)


就我的2美分

也许差异在于正在加载的页面和准备就绪的页面之间的差异。这也可能是一个浏览器问题,因为在
document ready
上运行的第一个函数与我之后调整浏览器大小一个像素之间的差异是可以的

您应该尝试触发窗口调整大小事件,而不是调用函数内联。要触发resize事件,可以在绑定事件后在末尾对其进行标记,如下所示:

$(window).resize(function(){ adjustThumbs(); }).resize();

可能差异是正在加载的页面和准备就绪的页面之间的差异。这也可能是一个浏览器问题,因为在document ready上运行的第一个函数和我在之后调整浏览器大小一个像素之间的差异是可以的。我认为你在解释这个问题方面做得更好。问题是,当调整窗口大小时,如何避免这种情况,或“伪造”调整窗口大小的操作?
$(窗口).resize(函数(){adjustThumbs()}).resize()你能把这个答案作为一个答案,这样我就可以投我一票并勾选它:-)