jquery ajax load方法:只有一个请求多个元素?

时间:2011-02-18 20:17:35

标签: jquery ajax load each

嘿 我的页面上有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. 整个事情可能是一个相当糟糕的方法,但我认为在我的情况下没有更好的方法。是否有可能只在ONCE上执行load-method并获取每个ul.ratings元素并替换正确的元素?现在,如果我的页面上有10个ul.ratings元素,我正在进行加载调用。

  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您是否可以控制您拨打的网址?你能让它只返回你想要的数据吗?在这种情况下,让它返回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());
  });
});

我自己没有运行此代码。

答案 1 :(得分:0)

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

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);

我认为您的主要问题不在于确定您要替换的内容。

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

我想这意味着总是:

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