Javascript jQuery:offset()动画和ajax
我在jQueryAjax和动画方面有点问题。 我有一个带有菜单的布局,可以调用我的页面,加载时,使用Javascript jQuery:offset()动画和ajax,javascript,jquery,jquery-easing,Javascript,Jquery,Jquery Easing,我在jQueryAjax和动画方面有点问题。 我有一个带有菜单的布局,可以调用我的页面,加载时,使用jQuery提供一点动画 这是我的ajax.js $(document).ready(function() { // Ajax request $(".transition").click(function() { page = ( $(this).attr("id") ); $.ajax({ type: "GET", ur
jQuery提供一点动画
这是我的ajax.js
$(document).ready(function() {
// Ajax request
$(".transition").click(function() {
page = ( $(this).attr("id") );
$.ajax({
type: "GET",
url: page,
data: "ajax=true",
cache: false,
success: function(html) {
afficher(html);
},
error: function(XMLHttpRequest,textStatus,errorThrows) {
// Erreur durant la requête
}
});
});
function afficher(donnees) {
$(".step").empty();
$(".step").append(donnees);
// Animate
var step_position = $(".step").offset();
$(".step").offset({ top: step_position.top, left: step_position.left - 1000 });
$(".step").animate({
"left": '+=1000',
}, 750, 'easeOutBack');
}
});
如果用户点击,一切都很好
但如果:
- 用户双击同一链接
- 用户快速点击几个链接
偏移量。我尝试将常量作为参数(而不是执行var step_position=$(“.step”).offset();
)但没有成功
无论进行了多少次ajax调用,如何始终正确显示数据?Moi aussi
是的,他也有同样的问题——这叫做比赛条件。我有一个按钮-我不知道你是否在用
我所做的是在单击处理程序中,我做的第一件事是使用JQUERY.attr()
函数禁用按钮-添加disable属性
这会阻止第二次单击执行任何操作。当ajax返回结果时,我重新启用了该按钮。在这种情况下,您必须在动画之后的某个地方使用回调来重新启用按钮。是的,我已经尝试过了,但是用户必须等待页面加载,然后才能单击其他任何内容。如果他打错了,他必须等待:这就是我想要避免的。我最终做了非常类似的事情。我定义了一个全局变量,用于检查ajax调用是否仍在处理中。这并不能解决我的“流体导航”问题(请参阅我之前的评论),但可以。不管怎样,如果没有人提出不同的意见,我会在几天后接受你的回答。谢谢如果不希望用户等待太长时间,可以为jqueryajax调用设置一个超时,最好在服务器上设置一个(稍微)更短的超时。