Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 浏览器调整大小条件不总是正确触发_Jquery_If Statement_Resize - Fatal编程技术网

Jquery 浏览器调整大小条件不总是正确触发

Jquery 浏览器调整大小条件不总是正确触发,jquery,if-statement,resize,Jquery,If Statement,Resize,调整浏览器大小时,我有一个简单的功能,可以检查窗口比例以影响布局,其中一部分是: if ( jQ(window).width() > ($elemH*2) ) /* Target widest settings */ { $body.addClass('wide').removeClass('tall'); $elemW = ($elemH*2); productWideSize(); 上面的工作非常完美,只有0个问题(我包含它纯粹是为了上下文)。问题似乎在于pr

调整浏览器大小时,我有一个简单的功能,可以检查窗口比例以影响布局,其中一部分是:

if ( jQ(window).width() > ($elemH*2) ) /* Target widest settings */ {
    $body.addClass('wide').removeClass('tall');
    $elemW = ($elemH*2);
    productWideSize();
上面的工作非常完美,只有0个问题(我包含它纯粹是为了上下文)。问题似乎在于
productWideSize()
,如下所示:

function productWideSize(){
    $info = jQ('#productInfo');
    $infoH = jQ('#productInfo').outerHeight();
    $maxH = (jQ('#product-form').height()-120);
    if ( $infoH < $maxH ) /* Check if element height is LT available space */ {
        $info.removeClass('scroll').css({
            'margin-top' : '-' + $infoH/2 + 'px'
        })
    } else {
        $info.addClass('scroll').css({
            'margin-top' : '',
        })
    };
};
函数productWideSize(){
$info=jQ(“#productInfo”);
$infoH=jQ('#productInfo').outerHeight();
$maxH=(jQ(“#产品形式”).height()-120);
如果($infoH<$maxH)/*检查元素高度是否低于可用空间*/{
$info.removeClass('scroll').css({
'页边距顶部':'-'+$infoH/2+'px'
})
}否则{
$info.addClass('scroll').css({
“页边空白处”:“,
})
};
};
当仔细调整浏览器的大小时,它工作得很好;但是如果浏览器大小突然改变,通常不会触发if/else部分之间的转换。在Chrome和Firefox中测试


显然,代码“有效”,但并不特别健壮。我对编码还是新手,不知道我是否采用了一些根本不好的做法。有什么建议吗?

问题似乎是在条件中引用值之前缓存这些值。将其更改为以下工作:

function productWideSize(){
    $info = jQ('#productInfo');
    if ( jQ('#productInfo').outerHeight() < jQ('#product-form').height()-120 ) {
        $info.removeClass('scroll').css({
            'margin-top' : '-' + jQ('#productInfo').outerHeight()/2 + 'px'
        })
    } else {
        $info.addClass('scroll').css({
            'margin-top' : '',
        })
    }
};
函数productWideSize(){
$info=jQ(“#productInfo”);
if(jQ('productInfo').outerHeight()