【问题标题】:jquery ajax load method: only one request for multiple elements?jquery ajax加载方法:对多个元素只有一个请求?
【发布时间】:2011-06-30 02:05:08
【问题描述】:

嘿, 我的页面上有 10 个“ul.rating”元素。我想每分钟刷新一次这些元素。

var reload = 60000;
var currentpage = window.location;
setInterval(function() {

    $('ul.ratings').load(currentpage + " .ul.ratings >*", function() {
        //callback
    });

}, reload);

现在我有以下两个问题。

  1. 我需要重新加载每个新元素。现在,我可能正在为页面上的所有 ul.ratings 元素重新加载 SAME ul.ratings 元素。所以必须有某种方法使用 index() 或其他一些 jquery 方法来重新加载第一个 ul.ratings 元素和第一个 ul.ratings 元素,并重新加载第五个 ul.ratings 元素和第五个 ul.ratings 元素。

  2. 整个事情可能是一个相当糟糕的方法,但我想在我的情况下没有更好的方法。是否可以只执行一次加载方法并获取每个 ul.ratings 元素并替换正确的元素?现在,如果我的页面上有 10 个 ul.ratings 元素,我正在执行加载调用。

感谢您的帮助!

【问题讨论】:

    标签: jquery ajax load each


    【解决方案1】:

    您是否可以控制您调用的 URL?你能让它只返回你想要的数据吗?在这种情况下,让它返回 JSON 或 XML 并使用该信息重新加载您的 ul。

    否则,您可以使用 $.get 函数,在 jquery 中加载 HTML 并自己查找 ul:

    var ulorigs = $('ul.ratings');
    $.get('url', function (data) { 
      var content = $(data);
      $('ul.ratings', content).each(function(ind,elem) {
        $(ulorigs.get(0)).html($(elem).html());
      });
    });
    

    这段代码不是我自己运行的。

    【讨论】:

      【解决方案2】:

      我没有页面可以自己尝试,但大概是:

      var reload = 60000;
      var currentpage = window.location;
      
      setInterval(function() {
      
          $('ul.ratings').each(function(i, el) {
              $(this).load(currentpage + " ul.ratings:eq(" + i + ") > li", function() {
                  //callback
              });
      
          });
      }, reload);
      

      我认为您的主要问题不是针对您要替换的 ul 内容。

      这可能是一个非常糟糕的想法,因为最终你是在谈论触发这个 10 次并异步加载页面 10 次。

      我想这意味着总会有:

      $("body").load(currentpage + " body > *")
      

      ;)

      【讨论】:

        猜你喜欢
        • 2017-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-24
        • 2015-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多