【问题标题】:Getting the value of last div in AJAX request获取 AJAX 请求中最后一个 div 的值
【发布时间】:2016-08-27 06:53:59
【问题描述】:

我正在构建一个小型聊天应用程序来学习一些关于 jquery 和 AJAX 的知识。 这一切都很好,但目前,聊天框正在使用以下代码每隔一段时间抓取 log.html 的 HTML:

function loadLog(){     
          $.ajax({
            url: "log.html",
            cache: false,
            success: function(html){    
                $(".chatbox").html(html); //Insert chat log into the #chatbox div
              },
        });
    }

现在,如果用户试图复制一行,它就会出错,因为 html 每隔几秒就会刷新一次。 所以我想建立一个检查,记住最后一条已知消息并将其与日志中的最后一条消息进行比较。如果它们不匹配(出现了一条新消息),只有这样浏览器才会刷新聊天框中的 html。

我对 AJAX 和 Jquery 还很陌生,所以我想问你们以下问题: 比较 log.html 中的最后一条消息和聊天框 div 中的最后一个 div 的最佳方法是什么?

我的理论是

success: function(html){    
            $(html).find(last(div));
          },

但我不完全知道如何获取最后一个 div 的值。

我希望我能很好地解释这个问题。 另外,欢迎任何想法:)

附:这是 log.html 中一行的示例

<div class='msgln'>(4:40 PM) <b>Jeroen</b>: Welcome<br></div>

【问题讨论】:

    标签: jquery html ajax


    【解决方案1】:

    你可以使用

      $last_div = $(html).find("div").last();
      text = $last_div.text();
    

    供参考 见https://api.jquery.com/last/

    【讨论】:

      【解决方案2】:

      你可以:

      a) 将检索到的数据保存到全局变量中 - 请参阅 here

      b) 将检索到的数据持久保存到 HTML5 本地存储 - 请参阅 here

      然后与全局变量或本地存储进行比较,如果是新数据则覆盖它。

      这比每次调用 ajax 时都查找数据要好。

      【讨论】:

      • 您能解释一下哪种方式更好吗?是性能更好还是易用性更好?
      • @Alterlai 在性能方面更好。由于数据已存储且随时可用,因此无需通过 DOM 搜索即可找到它。特别是因为您计划每隔几秒钟执行一次搜索。如果同时发生其他进程(例如播放 GIF),则可能会给浏览器带来压力并产生可见的副作用,例如瞬间冻结或抖动动画。
      • 好的,谢谢你的解释,我试试看!
      【解决方案3】:

      你可以关注这个

      <div id=container>
          <div id=box1></div>
          <div id=box2></div>
          <div id=box3></div>
          <div id=box4></div>
          <div id=box5></div>
          <div id=box6></div>
      </div>
      

      jQuery 代码

      $(document).ready(function(){
         $('#container').children().last().attr('id');
      });
      

      【讨论】:

        【解决方案4】:

        这样使用:

        success: function(html){
          $(html).find(".msgln").last();
        },
        

        如果这不起作用,那么您可以制作一个假元素并访问最后一项:

        success: function(html){
          $("<div />", {
            html: html
          }).find(".msgln").last();
        },
        

        【讨论】:

          猜你喜欢
          • 2017-09-18
          • 2018-02-16
          • 2015-09-26
          • 1970-01-01
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-18
          相关资源
          最近更新 更多