完成AJAX后滚动到div的底部

时间:2013-08-17 15:37:11

标签: javascript jquery ajax

我在这里看到如何滚动到div的底部... 但不知何故,它对我不起作用......与自动对焦相同。

猜测问题是我做了一个AJAX调用,但它不起作用。

我的AJAX电话:

  function toonBericht(vuserid) {
    $("#verstuurbericht").show();
    $("#chatresultaatcontent").val("");

    $.ajax({
      type: "GET",
      data: { userid:vuserid }, 
      url: './query/berichten/getbericht.php',
      success: function(result) {
        $("#chatresultaatcontent").html(result);
        var objDiv = document.getElementById("chatresultaatcontent");
        objDiv.scrollTop = objDiv.scrollHeight;
      }
    });
  }

然后当然我有一个名为#chatresultaatcontent的div。 它包含来回发送的聊天消息。

作为替代方案,我也尝试使用以下代码在成功后加载一个函数(即scrollBottom()):

$("#chatresultaatcontent").scrollTop($("#chatresultaatcontent")[0].scrollHeight);

这也没有做任何事情。在成功后尝试自动聚焦在一个场上时同样的问题......任何人都知道为什么?

2 个答案:

答案 0 :(得分:2)

试试这个:

success: function(result) {
    var content = $("#chatresultaatcontent");
    content .
        html(result).
        delay(50).
        scrollTop(content[0].scrollHeight);
        // The delay seems essential due to some strange problems
        // with the OP's code
  }

A working Demo

答案 1 :(得分:1)

这不是最漂亮的解决方案,但不管怎样,这似乎有效:

  function toonBericht(vuserid) {
    $("#verstuurbericht").show();
    $("#chatresultaatcontent").val("");

    $.ajax({
      type: "GET",
      data: { userid:vuserid }, 
      url: './query/chatten/getchatbericht.php',
      success: function(result) {
        $("#chatresultaatcontent").html(result);
        setTimeout(function(){
          var d = $("#chatresultaatcontent");
          d.scrollTop(d[0].scrollHeight);
        }, 1);
      }
    });
  }

使用一微秒的超时?它确实有效...如果我不使用它不会。很奇怪,但是......我现在只是这个解决方案。