【问题标题】: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);
现在我有以下两个问题。
我需要重新加载每个新元素。现在,我可能正在为页面上的所有 ul.ratings 元素重新加载 SAME ul.ratings 元素。所以必须有某种方法使用 index() 或其他一些 jquery 方法来重新加载第一个 ul.ratings 元素和第一个 ul.ratings 元素,并重新加载第五个 ul.ratings 元素和第五个 ul.ratings 元素。
整个事情可能是一个相当糟糕的方法,但我想在我的情况下没有更好的方法。是否可以只执行一次加载方法并获取每个 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 > *")
;)