Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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
Javascript 在调整窗口大小时运行jQuery脚本_Javascript_Jquery_Html - Fatal编程技术网

Javascript 在调整窗口大小时运行jQuery脚本

Javascript 在调整窗口大小时运行jQuery脚本,javascript,jquery,html,Javascript,Jquery,Html,我有一个脚本,可以在窗口上运行各种函数 $.event.add(window, 'load', resizeFrame); $.event.add(window, 'resize', resizeFrame); function resizeFrame(){ // various scripts // } 这工作非常好,我在那里运行的脚本也可以工作。然后,我有一个单独的脚本,用于设置文档加载时各种div的高度,这也可以正常工作 var h = 0, target = $('.

我有一个脚本,可以在窗口上运行各种函数

$.event.add(window, 'load', resizeFrame);
$.event.add(window, 'resize', resizeFrame);

function resizeFrame(){
    // various scripts //
}
这工作非常好,我在那里运行的脚本也可以工作。然后,我有一个单独的脚本,用于设置文档加载时各种div的高度,这也可以正常工作

var h = 0,
    target = $('.home #content .items-row .item article');

target.each(function(){
    if (h < $(this).height()){
        h = $(this).height();
    }
}); 
target.each(function () {
    $(this).css("height", h + 'px');
});
$('.testimonials .items-row').each(function () {
    $('.span4 article', this).css('height',
        Math.max.apply( Math, 
            $.map($('.span4 article', this), function(x) {
                return $(x).height();
            })
        )
    );
});

jQuery只是包装了标准的调整DOM大小事件,例如

window.onresize = function(event) {
    ...
};

jQuery可能会做一些工作,以确保在所有浏览器中一致触发调整大小事件,但我不确定是否有任何浏览器不同,

您的加载事件在我尝试的示例中没有触发

请尝试以下操作,而不是当前的事件注册:

JSFiddle: 更新: 您正在设置一个固定高度,因此下次调整高度时,高度将与上一次指定的相同,并且不会更改。新的JSFIDLE首先将高度重置为其自然状态

// Revert to height based on content
target.each(function () {
    $(this).css("height", '');
});

我不明白resize公式背后的逻辑,它看起来只是设置了所有其他元素中最高元素的高度。我们能看到resizeFrame中的各种脚本吗?@MuhammadUmer这正是它所做的,哪一位是不合逻辑的?我已经添加了“各种脚本”。您的HTML示例(即JSFIDLE中的HTML)将使测试/修复变得更容易:旁注:您不需要为jQuery CSS属性(如高度)附加+px。不管怎样,它都会假设数字是px值。在我添加的脚本的后半部分之前,resize函数工作正常,并且经过跨浏览器测试,只是添加此脚本不会在resize上运行。这是一种更好的方法!我已经以这种方式重新编写了代码,因此感谢您的帮助,不幸的是,尽管这样做很有帮助,但我仍然面临这样一个问题:当窗口调整大小时,从元素最高处设置高度的div不会改变。它们的高度最初是从这个脚本中获得的,但在每次调整窗口大小时,它们不会再次调整大小。@Tim Wilkinson:Sorted。一旦你拼出来就很明显了。高度显然是他们之前设定的。需要先将它们重置为继承的值。
window.onresize = function(event) {
    ...
};
// jQuery DOM ready shortcut event handler (with locally scoped $)
jQuery(function($){

   // Register for window resize
   $(window).resize(resizeFrame);

   // Do initial resize
   resizeFrame();
});
// Revert to height based on content
target.each(function () {
    $(this).css("height", '');
});