0

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 のサイズについて最も奇妙な結果が得られます。スクリプトは、毎回 2 行の新しいコンテンツで新しい div を div hilos に挿入しますが、それぞれ 30 または 40 ピクセル以下ですが、カウントは 1473 から始まり、次に 2193 にジャンプし、次に 2913 にジャンプします...

Firefox は一番下までスクロールしますが、IE では別の数字 (小さい数字) が表示され、一番下までスクロールしません...

あまり混乱しないことを願っています...

4

1 に答える 1

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;
}
于 2012-11-15T11:38:45.300 に答える