如果单击过快,jQuery滚动按钮将停止工作

如果单击过快,jQuery滚动按钮将停止工作,jquery,Jquery,如果您快速单击“向左滚动”,您应该能够连续单击它至少几次 然后,你需要点击“向右滚动”很多次,但它最终会起作用 下一次“向左滚动”似乎再也不起作用了 (顺便说一句,在JSFIDLE:)中我似乎根本无法让它工作。我的解决方案防止了动画上的双重触发,它只绑定到应该能够触发的按钮,并在单击按钮后立即解除绑定: var scrolltime = 1000; var scroll_left = function(e) { $('#scroll_left').unbind('click'); $(

如果您快速单击“向左滚动”,您应该能够连续单击它至少几次

然后,你需要点击“向右滚动”很多次,但它最终会起作用

下一次“向左滚动”似乎再也不起作用了


(顺便说一句,在JSFIDLE:)中我似乎根本无法让它工作。

我的解决方案防止了动画上的双重触发,它只绑定到应该能够触发的按钮,并在单击按钮后立即解除绑定:

var scrolltime = 1000;

var scroll_left = function(e) {
  $('#scroll_left').unbind('click');
  $('#scroll_right').click(scroll_right);
  $('#left_content').animate({
    left: '-50%'
  }, scrolltime, function() {
    // Animation complete.
  });
  $('#right_content').animate({
    left: '50%'
  }, scrolltime, function() {
    // Animation complete.
  });
}

var scroll_right = function(e) { 
  $('#scroll_right').unbind('click');
  $('#scroll_left').click(scroll_left);
  $('#left_content').animate({
    left: '50%'
  }, scrolltime, function() {
    // Animation complete.
  });
  $('#right_content').animate({
    left: '150%'
  }, scrolltime, function() {
    // Animation complete.
  });
}

$(document).ready(function(){    
    $('#scroll_left').click(scroll_left);
    //$('#scroll_right').click(scroll_right);
});
​

Fiddle:

我的解决方案防止在动画上出现双重触发,它仅绑定到应该能够触发的按钮,并在单击按钮后立即解除绑定:

var scrolltime = 1000;

var scroll_left = function(e) {
  $('#scroll_left').unbind('click');
  $('#scroll_right').click(scroll_right);
  $('#left_content').animate({
    left: '-50%'
  }, scrolltime, function() {
    // Animation complete.
  });
  $('#right_content').animate({
    left: '50%'
  }, scrolltime, function() {
    // Animation complete.
  });
}

var scroll_right = function(e) { 
  $('#scroll_right').unbind('click');
  $('#scroll_left').click(scroll_left);
  $('#left_content').animate({
    left: '50%'
  }, scrolltime, function() {
    // Animation complete.
  });
  $('#right_content').animate({
    left: '150%'
  }, scrolltime, function() {
    // Animation complete.
  });
}

$(document).ready(function(){    
    $('#scroll_left').click(scroll_left);
    //$('#scroll_right').click(scroll_right);
});
​
小提琴:

调用
$.stop()
对我来说似乎是可行的,但我很难可靠地重现错误

stop
第一个参数设置为true时,将清除当前动画队列,因此重复单击按钮时,仅会执行一个绑定动画事件

调用
$.stop()
对我来说似乎是可行的,但我很难可靠地重现错误

stop
第一个参数设置为true时,将清除当前动画队列,因此重复单击按钮时,仅会执行一个绑定动画事件


你没有在你的小提琴中定义
scrolltime
:你没有在你的小提琴中定义
scrolltime
:谢谢,我刚才想到了这一点,但是如果你多次单击它,它会变慢-除非你也将动画更改为“线性”。在向左滚动的动画中,我会看到彩色线条。还有人看到了吗?我在谷歌Chrome 21中看到了一种黄色的痕迹:如果你调整窗口大小,痕迹就会消失……谢谢,我当时想到了这一点,但如果你多次单击它,它会变慢——除非你也将动画改为“线性”。在向左滚动的动画中,我会看到彩色线条。还有人看到了吗?我在Google Chrome 21中看到了一条黄色的轨迹:如果你调整窗口大小,轨迹就会消失……这是一种很好的重用函数的方法,可以完全做到这一点:)这是一种很好的重用函数的方法,可以完全做到这一点:)