jQuery.load()的不同方法;允许加载进程上的停止方法
这是我在这里的第一个问题,我找不到任何相关的问题,似乎有相同的问题。我发现有几个人在谈论使用.bind()来禁用链接,但我的问题是,在站点的不同部分有多个链接加载不同的页面 所以我想知道是否有一种简单的ajax加载方法可以使用,如果单击另一个链接加载其他内容,它可以选择停止并清除加载的内容 我这样做是为了预防网络上那些不耐烦的人。因为,在一个div上调用一个加载,然后在同一个div上调用另一个加载,有时会导致第一个加载花费更长的时间,并在第二个加载之后结束加载 这就是我目前正在使用的jQuery.load()的不同方法;允许加载进程上的停止方法,jquery,ajax,load,Jquery,Ajax,Load,这是我在这里的第一个问题,我找不到任何相关的问题,似乎有相同的问题。我发现有几个人在谈论使用.bind()来禁用链接,但我的问题是,在站点的不同部分有多个链接加载不同的页面 所以我想知道是否有一种简单的ajax加载方法可以使用,如果单击另一个链接加载其他内容,它可以选择停止并清除加载的内容 我这样做是为了预防网络上那些不耐烦的人。因为,在一个div上调用一个加载,然后在同一个div上调用另一个加载,有时会导致第一个加载花费更长的时间,并在第二个加载之后结束加载 这就是我目前正在使用的 $('#c
$('#content').empty().load(event.value,function(){//callback})代码>
我很确定,一旦调用.load()方法,就无法停止它,那么是否还有其他加载方法可以停止?您可能希望在与容器关联的数据中保留类似于序列号的内容。每次调用加载时递增序列号,然后在实际加载数据之前在回调中检查序列号是否小于或等于预期序列号。在这个场景中,当您将数据的检索与内容的注入分离时,您将使用get
而不是load
$('#content').empty().each( function() {
var $this = $(this);
var seq = $this.data('seq') || 0;
$this.data('seq',++seq);
$.get( event.value, function(data) {
var newSeq = $this.data('seq');
if (seq >= newSeq) { // ignore if a later request has been made
$this.html(data);
}
});
});
您可能希望在与容器关联的数据中保留类似于序列号的内容。每次调用加载时递增序列号,然后在实际加载数据之前在回调中检查序列号是否小于或等于预期序列号。在这个场景中,当您将数据的检索与内容的注入分离时,您将使用get
而不是load
$('#content').empty().each( function() {
var $this = $(this);
var seq = $this.data('seq') || 0;
$this.data('seq',++seq);
$.get( event.value, function(data) {
var newSeq = $this.data('seq');
if (seq >= newSeq) { // ignore if a later request has been made
$this.html(data);
}
});
});
@特凡福森:我觉得你的代码有点超出我的理解力。我似乎并不完全理解如何实现它。我可能也应该发布更多的代码,让您能够解释会发生什么
但是我确实找到了一种不同的方法来终止load()
方法
我使用SWFAddress.js在一个页面上运行大部分站点,当url更改时,SWFAddress.js会进行更改。因此,每次我的url更改时,都会加载新内容
$.address.change(function(event) {
rand = Math.floor(Math.random()*1000);
$('#content').empty().append('<div id="loading'+$rand+'"></div>');
$('#loading'+$rand).empty().load(event.value, function(data) { /*callback*/ });
});
$.address.change(函数(事件){
rand=Math.floor(Math.random()*1000);
$('#content').empty().append('');
$('#加载'+$rand).empty().load(event.value,函数(数据){/*callback*/});
});
我现在在我的contentdiv中添加了一个新的div,它有一个随机的id,我将内容加载到这个新的div中。这样,加载方法就不会重叠或同时发生
到目前为止,它工作得非常好。你认为这可能是个问题吗?@tvanfosson:我觉得你的代码有点让我摸不着头脑。我似乎并不完全理解如何实现它。我可能也应该发布更多的代码,让您能够解释会发生什么
但是我确实找到了一种不同的方法来终止load()
方法
我使用SWFAddress.js在一个页面上运行大部分站点,当url更改时,SWFAddress.js会进行更改。因此,每次我的url更改时,都会加载新内容
$.address.change(function(event) {
rand = Math.floor(Math.random()*1000);
$('#content').empty().append('<div id="loading'+$rand+'"></div>');
$('#loading'+$rand).empty().load(event.value, function(data) { /*callback*/ });
});
$.address.change(函数(事件){
rand=Math.floor(Math.random()*1000);
$('#content').empty().append('');
$('#加载'+$rand).empty().load(event.value,函数(数据){/*callback*/});
});
我现在在我的contentdiv中添加了一个新的div,它有一个随机的id,我将内容加载到这个新的div中。这样,加载方法就不会重叠或同时发生
到目前为止,它工作得非常好。您认为这可能是一个问题吗?请参阅其他有关ajax请求管理的条目:
有关ajax请求的管理,请参见以下其他条目:
我看到你的新员工在这里。你应该编辑并添加到原始问题中,而不是作为答案发布。是的,我不知道这个网站的礼仪如何。如果我冒犯了你,我向你道歉。@Mark-事实上,我只是在看徽章。有一个“自学”徽章,要求你回答自己的问题。所以这是允许的。我看到你的朋友是新来的。你应该编辑并添加到原始问题中,而不是作为答案发布。是的,我不知道这个网站的礼仪如何。如果我冒犯了你,我向你道歉。@Mark-事实上,我只是在看徽章。有一个“自学”徽章,要求你回答自己的问题。所以这是允许的。您可以取消ajax请求(即.load是什么)您可以取消ajax请求(即.load是什么)