【问题标题】:Equalizing Heights with Jquery after event事件后用 Jquery 均衡高度
【发布时间】:2011-06-15 14:03:31
【问题描述】:

我正在开发一个网站,它解析 RSS 提要并将它们显示在一系列 div 中。加载完所有提要后,我想运行一个 jquery 函数,该函数基本上采用最高 div 的高度并将所有 div 设置为等于该高度。您可以在这里查看网站:http://vitaminjdesign.com/adrian/

目前,我使用下面概述的 jquery equal heights plugin

function equalHeight(group) {
    var tallest = 0;
    group.each(function() {
        var thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}

你可以这样称呼它:

$(document).ready(function() {
$(".block").equalHeights(); 
});

这不能正常工作(它将所有 div 的高度设置为 BEFORE rss 提要加载的最高 div 的高度),很可能是因为我需要使用实时事件处理程序?任何人都知道在所有内容完全加载后如何将高度设置为相等?

【问题讨论】:

    标签: jquery height equals


    【解决方案1】:

    AJAX 完成后,您需要调用equalHeight。您有两种选择:(a) 在加载每个项目后进行调用,或 (b) 在加载所有项目后进行一次调用。 equalHeight 看起来并不占用大量资源,因此您不妨每次都拨打电话。

    所以只需在每个 AJAX 调用的 success 回调中添加 equalHeight($(".block"));

    $.ajax({
        url: 'someurl.rss',
        success: function(){
            // your code to insert the relevant content
    
            equalHeight($(".block")); // insert this at the end of each call to the RSS files
        }
    });
    

    另外一种更密集但在代码方面更简单的方法是在每次 AJAX 调用后使用ajaxSuccess 运行一个函数:

    $(document).ajaxSuccess(function(){
        equalHeight($(".block"));
    });
    

    【讨论】:

    • 我不熟悉这种方法,但为了让它工作,我想我需要在所有项目都加载后拨打电话......
    • 该函数在 Chrome 中呈现高度的方式非常不同...我认为是由于 ajaxSuccess
    • 这种方法的结果非常不可靠...有时有效,有时无效,有时只是部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2011-01-10
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多