【问题标题】:Run jQuery function on update of div's HTML在更新 div 的 HTML 时运行 jQuery 函数
【发布时间】:2015-07-02 15:16:21
【问题描述】:

我对文件有以下 AJAX 调用:

$.ajax({
    url: readfile.txt,
    cache: false,
    success: function(data){
        $('#content').html(data);
    };
});

它将 readfile.txt 的内容附加到#content div。这工作正常。

我想要做的是每次更改内容时滚动到 div 的底部。目前我有以下:

$('#content').bind('DOMNodeInserted DOMSubtreeModified', function(){
    $('#content').animate({scrollTop: $('#content').prop("scrollHeight")}, 500);
});

animate 函数工作正常,但是当 #content div 的 html 发生更改时它没有被触发。有没有更好的方法来列出 html 更改事件?

提前致谢。

【问题讨论】:

  • 您可以在成功函数中手动触发事件。这是一个选择吗?
  • 我认为您的代码实际上是按原样工作的,但动画除外:jsfiddle.net/vxudjx1o
  • 对所有垃圾评论感到抱歉。你的听众应该在工作。我唯一能想到的是动画正在运行很多次,这导致它需要永远。尝试将.stop() 添加到您的动画中,以确保它只运行一次。 jsfiddle.net/vxudjx1o/1。 (请注意,在我的演示中,我将滚动条更改为正文只是为了演示)

标签: jquery html ajax


【解决方案1】:

只需将动画添加到您的成功回调中

$.ajax({
    url: readfile.txt,
    cache: false,
    success: function(data){
        $('#content').html(data).animate({scrollTop: $('#content').prop("scrollHeight")}, 500);
    };
});

【讨论】:

  • 击败我 ;) 但是是的,这是解决问题的最简单方法。虽然我可能会缓存 $('#content') 如果更频繁地使用它
  • 不幸的是,这只是 ajax 调用的基础,当我将它添加到成功函数时,它会破坏功能。不过应该在帖子中提到这一点。根据我提供的信息,您的答案是正确的,因此我将其标记为正确,但问题仍然存在:(
  • 尝试只使用DOMSubtreeModified事件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2022-09-29
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多