jQuery搜索/过滤表 - 表的高度未正确更新

时间:2012-03-02 21:38:33

标签: jquery

[解决]

问题是IE8,只需将其添加到头部:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

搜索功能中的某些语句与IE8不兼容,尚未找到哪些语句。也许是.hide()


我有一个搜索框,一个数据表和一个页脚。

在后端(jQuery):我有一个搜索功能,根据用户输入过滤表。当用户输入搜索词时,结果被动态过滤(表的高度动态变化);

我还有一个功能,根据表格的长度将页脚定位到页面底部。  如果表长于浏览器高度,则页脚将附加到表的末尾。  如果表格较短,则页脚将固定在页面底部。

问题:我输入搜索字词时,$('#datatable').outerHeight();并不总是自我更新。仅在IE8中,在Firefox中运行良好。

这是功能:

function positionFooter(obj){
var a = $('#datatable').outerHeight();
var b = $(window).height();

if (a >= b) {
    obj.css("position","relative");
} else {
    obj.css("position","fixed");
    obj.css("bottom","0px");
}
}


function searchTable(inputVal){
    // go through every row
    $('#datatable').find('tr').each(function(index, row){
        var allCells = $(row).find('td');
        if(allCells.length > 0){
            var found = false;
            // go through every cell
            allCells.each(function(index, td){
                var regExp = new RegExp(inputVal, 'i');
                // check if current cell = keyword
                if(regExp.test($(td).text())){
                    found = true;
                    return false;
                }
            });
            // show all found row, hide rest
            if(found == true){
                $(row).show();
            }else{
                $(row).hide();
            }
        }

    });
}

以下是我如何称呼它们:

$(window).resize(function(){
    positionFooter($('#footer'));
});

$(document).ready(function(){
    positionFooter($('#footer'));

    $('#search').keyup(function(){
    searchTable($(this).val());
    // as user type keyword, table height changes
    // should re-position footer everytime table changes
    positionFooter($('#footer'));
    });
});
  • 我使用静态数据测试positionFooter()函数,它工作正常。
  • 我用QuickSearch插件替换了这个搜索,但仍有问题。

似乎当我将两者合并时,它不再起作用,是因为我如何称呼它们? 但奇怪的是问题只发生在IE8中。我很困惑......

0 个答案:

没有答案