。
我最近才遇到这个问题,我希望我可以从这里获得一些顶级想法。这是我的代码的样子:
$(document).on('mouseover', '#element', function(){
$.ajax({
// generate hover view
})
});
$(document).on('mouseout', '#element', function(){
// remove hover view
});
正确的执行订单将为鼠标 - 生成视图-Mouseout -Hide View。
但是,由于视图部分取决于Ajax,因此如果用户悬停了超快,则有可能在Ajax调用完成之前触发鼠标out事件。在这种情况下,在Ajax调用完成后,由于已经触发了鼠标out事件,因此视图将仅坐在DOM中。
您是否尝试使用承诺?这将需要进行调整,但类似:
$.when( $.ajax( "someajaxfile.txt" ) ).then(function( data, textStatus, jqXHR ) {
$(document).on('mouseout', '#element', function(){
// remove hover view
});
});
您可能还需要解开鼠标。