【问题标题】:Jquery sliding gets more delayed for each click每次点击 Jquery 滑动都会延迟更多
【发布时间】:2010-11-29 19:51:06
【问题描述】:

如果您在此处登录 http://freeri.freehostia.com/utanme/image.php 用户名/密码:Demo123 并按下任何图像,当它滑动时单击主图像,执行几次 突然你会发现每次滑动的时间越来越长。

我正在使用的代码

$(function(){
    $('.slide:last-child img').live('click', function() {
        $('.slide:first-child').animate({
            marginLeft: '0'
        },500);
        return false;
    });
    $('.slide .img').click(function(){
        var img = $(this).find('a').attr('href');
        var title = $(this).find('h2').text();
        var desc = $(this).find('p').text();
        $('.slide:last-child img').attr('src',img);
        $('.slide:last-child h2').text(title);
        $('.slide:last-child #cont').text(desc);
        $('body').prepend('<div id="cover"><img src="./images/loader.gif"/></div>');
        $('.slide:last-child img').load(function(){
            $('#cover').detach();
            $('.slide:first-child').animate({
                marginLeft: '-900px'
            },500);
        });
        return false;
    });
});

我在这里错过了什么? 任何帮助将不胜感激

【问题讨论】:

  • 滑动的时间越来越长,是指滑动动画开始时间变长还是动画持续时间变长?

标签: jquery delay jquery-animate


【解决方案1】:
$('.slide:first-child').stop(true,true).animate({ marginLeft: '-900px' },500});

关于停止: http://api.jquery.com/stop/

此外,我在同一个元素上的实时和加载事件有问题(并不是说这是导致您的问题的原因。)

可能不合适,但如果您仍有问题,请尝试在后续加载绑定之前删除实时事件。 http://api.jquery.com/die/

编辑:请注意,这可能对性能不利(不断删除并重新添加实时绑定)。我并不是说一直这样做,但它可能有助于查明您的问题。

【讨论】:

  • 谢谢,停止对我有用。细微的编码错误;刷新内容时,我要求一个项目确保它已关闭(即使已经隐藏也会启动动画),这当然会为每次有人单击刷新时添加关闭动画时间。
【解决方案2】:

尝试调用 stop(true, true);当动画据称结束时,后台可能会进行一些奇怪的计算,这些计算会影响回调的设置方式。我不知道这是否可行,但值得一试。 :) -托马斯

【讨论】:

  • 我做了 $('.slide:first-child').animate({ marginLeft: '-900px' },500,function(){ stop(true, true); });没有帮助
  • $(this).stop(true, true);它应该是什么......这个脚本是你写的吗?
猜你喜欢
  • 2014-10-31
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 2015-07-12
  • 2018-11-04
  • 1970-01-01
  • 2011-06-22
相关资源
最近更新 更多