gea*_*tal 7 ajax jquery timeout delay
我有一个指向html页面的链接列表.
<ul id="item-list">
<li><a href="assets/data/item1.html">Item 1</a></li>
<li><a href="assets/data/item2.html">Item 2</a></li>
<li><a href="assets/data/item3.html">Item 3</a></li>
<li><a href="assets/data/item3.html">Item 4</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我有一个javascript(jquery),并将html附加到我的文档中.
var request;
$('#item-list a').live('mouseover', function(event) {
if (request)
request.abort();
request = null;
request = $.ajax({
url: $(this).attr('href'),
type: 'POST',
success: function(data) {
$('body').append('<div>'+ data +'</div>')
}
});
});
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用setTimeout(),但它没有像我预期的那样工作.
var request, timeout;
$('#item-list a').live('mouseover', function(event) {
timeout = setTimeout(function(){
if (request)
request.abort();
request = null;
request = $.ajax({
url: $(this).attr('href'),
type: 'POST',
success: function(data) {
$('body').append('<div>'+ data +'</div>')
}
});
}, 2000
);
});
Run Code Online (Sandbox Code Playgroud)
在发送新请求之前,如何告诉jquery在悬停时等待(500ms或1000ms或...)?
我认为也许不是中止请求,你应该processing=false在成功/错误函数中用一个变量控制ajax请求,例如,被调用的变量.然后你只能在setTimeout中执行该函数,如果处理是假的.
就像是:
var request, timeout;
var processing=false;
$('#item-list a').live('mouseover', function(event) {
timeout = setTimeout(function() {
if (!processing) {
processing=true;
request = $.ajax({
url: $(this).attr('href'),
type: 'POST',
success: function(data) {
processing=false;
$('body').append('<div>'+ data +'</div>')
}
});
}
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30855 次 |
| 最近记录: |