jQuery:在添加更多内容后获取溢出div的大小

时间:2012-11-15 11:25:27

标签: javascript jquery

div:

<div id="hilo" style="width:48%;height:380px;overflow:auto;float:right;">

Javascript:

$('#re').click(function() {
    var error = 0;
    if($("#texto").val() == ""){
        $("#texto").css("border","solid 1px #990000");
        error = 1;
    }
    if(error == 1){
        return false;
    } else {
        var texto = $("#texto").val();
        var conv = $(this).attr("name");
        $.ajax({
            type: "POST",
            url: "ajaxHilo.php",
            cache: false,
            data: {
                'texto' : texto,
                'conv_id' : conv,
                'regresar' : 'ultimo'
            },
            success: function(data,status){
                $("#hilo").append(data);
                $("#texto").val("");
                var hei = $('#hilo').prop('scrollHeight');
                alert(hei);
                $("#hilo").animate({ scrollTop: hei}, 500);
                return false;
            },
            error: cualquierError
        });
    }
   });

id = re的元素是一个按钮。

我得到了溢出div的大小最奇怪的结果,脚本每次只用两行新内容将一个新的div插入div hilos,每个不超过30或40个像素,但是,计数开始在1473年然后跳到2193然后是2913,依此类推......

Firefox滚动到底部,但IE给了我不同的数字(较小的数字),并且根本不滚动到底部...

我希望不会太混乱......

1 个答案:

答案 0 :(得分:0)

我会在名为“hilo_content”的“hilo”中添加一个div,将ajax响应中的数据追加到它,然后使用.outerHeight()来获取高度值。所以像这样:

<div id="hilo" style="width:48%;height:380px;overflow:auto;float:right;">
    <div id="hilo_content"></div>
</div>

并在成功回调中:

success: function(data,status){
    $("#hilo_content").append(data);
    $("#texto").val("");
    var hei = $('#hilo_content').outerHeight();
    alert(hei);
    $("#hilo_content").animate({ scrollTop: hei}, 500);
    return false;
}