我有一个AJAX电话,如果我已经超过某个元素2秒钟并且没有拨打电话,我只能做什么。我尝试过使用setTimeout,但无论如何都要拨打电话。我怎样才能做到这一点?
这是我的代码:
$('tr').mouseenter(function(){
$( this ).next("#ticket_summary").show();
var context = $( this ).next("#ticket_summary");
var ticket_id = $( this ).next("#ticket_summary").data("id");
var url = "/support/ticket_description/" + ticket_id.toString();
console.log(url);
setTimeout(function(){
$.ajax({
url: url,
type: "GET",
dataType: "json",
success: function(data) {
context.find('#ticket_summary_description').html(data[1]['fields']['text']);
context.find('#ticket_summary_last_comment').html(data[2]['fields']['text']);
},
error: function(data) {
context.find('#ticket_summary_description').html('error');
context.find('#ticket_summary_last_comment').html('error');
}
});
}, 2000);
});
答案 0 :(得分:3)
如果用户离开,你必须用clearTimeout
取消超时。
mouseleave
one
clearTimeout
代码应该是这样的:
$('.the-element').on('mouseenter', function (e) {
var timeout = setTimeout(function () { ... }, 2000 );
$(e.target).one('mouseleave', function () {
clearTimeout(timeout)'
});
});
答案 1 :(得分:1)
我认为这会奏效。
<强> HTML:强>
<a id='test'>LINK</a>
<强> JavaScript的:强>
$("#test").mouseenter(function(){
setTimeout(function(){
$.ajax({
url:"test.php",
success:function(){
alert("success");
},
error:function(){
alert("ERROR");
}
});
},5000);
});
<强>的jsfiddle:强>