javascript - 使用 javascript 的元素大小 - 在过滤 JSON 数据时需要重新计算高度

标签 javascript json

var height = $("#mainbody").height();
$("#leftnav").css({"height":height});

$("#leftnav").css({"min-height":height,"padding-bottom":"15px","height":"auto"});

if($.browser.msie && $.browser.version < 7){

    $("#leftnav").css({"height":height});


    $("#leftNavSearch ul li").each(function(){

        if($(this).height() < 20){

            $(this).css({"height":"20px"});

        }else{

            $(this).css({"height":"auto"});

        }

    });     

}else if($.browser.msie && $.browser.version > 7){

    $("#leftnav").css({"height":"auto"});

}

上面的函数计算#mainbody 的高度,#leftnav 与之匹配。

但是,当您过滤页面上的 JSON 数据时,最终会在底部出现大量空白。

选择过滤器链接后重新计算高度的最佳方法是什么?

最佳答案

首先你应该包括 Ben Alman's great throttle plugin ,我们将使用它来限制调用调整大小函数的速率。

接下来我们将您的脚本放入函数中

function resize_left_nav(){
    //YOUR SCRIPT GOES HERE        
}

此后,我们在左侧导航上设置一个自定义事件,我们将触发该事件来调整列的大小。我们使用throttle来限制resize_left_nav函数被调用的速率

$('#leftnav').bind('resize-column',function(){
    $.throttle(250, resize_left_nav);
});

我们希望在两次情况下触发此事件:

  • 页面加载

    $(function(){ $('#leftnav').trigger('resize-column'); });

  • 当项目列表更新时。当过滤完成后,只需触发该事件即可。

为了稍微清理一下所有内容,我们可以将整个代码包装在 IIFE(立即调用函数表达式)中,如下所示:

(function(){
    function resize_left_nav(){ ... }

    $('#leftnav').bind( ... );

    $(function(){ ... });
})();

关于javascript - 使用 javascript 的元素大小 - 在过滤 JSON 数据时需要重新计算高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640199/

相关文章:

mysql - 如何根据属性名称过滤 mysql 中的 JSON 数据类型?

javascript - 在调整窗口大小时重新应用或调整 jCarouselLite

javascript - 单击复选框然后使用 jquery 删除验证

javascript - 拖动它的 child 时如何避免拖动 parent ?

java - java中如何将json数据转换为字符串

javascript - 如何通过for循环设置json数据

javascript - 无论 JSON 对象是否有多个数组,都循环遍历 JSON 项

javascript - 似乎 JavaScript RegExp 没有找到 "leftmost longest"

javascript - 如何将函数或其返回值从 typescript (.ts) 导入 javascript (.js)

javascript - 将 JSON 字符串从 serializeArray() 转换为 sql 可存储字符串