animate不会.stop() - 烦人的简单的Jquery问题

时间:2013-07-18 13:58:21

标签: jquery jquery-animate

我是Jquery的新手,我正在尝试设置一个搜索字段来设置动画,然后当您点击关闭图标(#search-close)时,它会动画显示,#search-close按钮会消失。

动画制作工作正常,但当我点击关闭按钮时,它会动画出来,但会立即再次动画

我知道这很简单

提前致谢

<script type="text/javascript">      

$j(document).ready(function() {

$j('#search-slide').mousedown(function() {
$j('#search-close').fadeIn(100);
$j('#search-slide').animate({'left':-1});
$j('#tbcopy a').fadeOut(100);});

$j('#search-close').mousedown(function() {
$j('#search-close').stop().hide();
$j('#search-slide').stop().animate({'left':-250});
});});


</script>

4 个答案:

答案 0 :(得分:2)

添加.stop(true,true)这会将clearqueu设置为true并跳转到动画结束。

答案 1 :(得分:1)

我相信,您收到此错误的原因是由于关闭按钮的位置,因为它位于顶部div中,您实际上会触发两个点击事件。你的stop()不起作用的原因可能是因为它们具有不同的动画队列,因为它们是不同的元素。尝试在动画完成之前检查的外部div添加一个布尔值。

答案 2 :(得分:0)

我建议你使用.finish()方法,因为它类似于.stop(true,true),但是.finish()实际上会完成动画而不是在中间停止。

答案 3 :(得分:0)

您可以添加一个类,以防止在单击后再次触发该框。

$(document).ready(function () {
    $('#search-slide').click(function () {
        if ($(this).hasClass('visible')) {
            console.log('triggered');
            return;
        } else {
            $('#search-close').fadeIn(100);
            $(this).animate({
                'left': -1
            }).addClass('visible');
            $('#tbcopy a').fadeOut(100);
        }
    });
    $('#search-close').click(function () {
        $(this).stop().hide();
        $('#search-slide').stop().animate({
            'left': -250
        });
    });
});

工作jsfiddle。同样请注意,我的解决方案不会再打开该框,但是如果您没有指定,则希望它再次打开。