为什么我的jquery动画在使用浏览器确认和警报时在chrome中无法正常运行?

时间:2011-09-29 15:41:00

标签: javascript jquery jquery-animate

我在Chrome中遇到一些关于jquery动画的问题。 我想知道是否有其他人见过这个。

我只是想做一些简单的幻灯片来隐藏div,或隐藏然后淡出div。 div上的向上滑动动画并没有发生在镀铬中,并且在褪色之前隐藏起来了。而在firefox中,动画是即时而流畅的。

问题是我有一个浏览器确认包围这些东西,只有用户确认才能执行此动画。 如果我删除确认,动画在chrome中运行正常。

这有点奇怪吗?

这是一个例子。经过确认,我没有上滑。没有确认,我得到一个。 也就是说,只需删除if(确认){}代码块。

   if (confirm('Are you sure you want to remove the item?')) {
        dragbox.slideUp('fast', function () {
            dragbox.remove();
            WebService.RemoveItem(itemId,
            //on success
                function () {
                    if ($('.dragbox').length == 0) {
                        //remove columns
                        $('.column').remove();
                    }
                },
            //on fail
                function () {
                    alert('Failed to remove the "' + itemName + '" item.');
                }
            );
        });
    }

在这个例子中,确认隐藏div之后和淡入淡出之前有一个滞后,这样div隐藏的时间比我想要的长。没有确认,ti就像我期望的那样。

        if (confirm('Are you sure?')) {
            $('#' + itemId).spin();
            WebService.AddItem(itemId,
            //onsuccess
                function (r) {
                    var item = $('#' + itemId); //this is a div
                    item.unspin();

                    item
                        .hide()
                        .toggleClass('item-added')
                        .fadeIn('fast', function () {
                            // Create the DOM elements
                            $('<p><img class="item-added" src="images/item-added.png" />')
                            // Sets the style of the elements to "display:none"
                            .hide()
                                // Appends the hidden elements to the "posts" element
                            .appendTo($('.contentInfo', item))
                                // Fades the new content into view
                            .fadeIn('fast');
                        });

                },
            //onfail
                function () {
                    $('#' + itemId).unspin();
                    alert('Failed');
                }
            );
        }

根据我的猜测和例子,任何人都可以证实或否定这一观点吗? 浏览器有哪些替代方案可以确认?

编辑:是的,我不确定发生了什么。

3 个答案:

答案 0 :(得分:0)

您使用的是最新版本的jQuery UI吗?你有jQuery UI样式表吗? 一切都很好看。如果您在此处找不到答案,请打开错误报告。

答案 1 :(得分:0)

更新Chrome修复了此问题。我现在正在运行15.0.874.120版本,一切都很好。我的话。

答案 2 :(得分:0)

我刚刚遇到了一些与几年前编写的代码相同的代码。现在它在基于webkit的浏览器中存在问题。

我有几个动画通过使用confirm()调用暂停,后续动画无法正常显示。我终于想通了,如果我在动画之前放一个短暂的延迟,它就会开始正常工作。

  if (confirm('Are you sure?')) {
    dragbox.delay(10).slideUp('fast', function () { ...

我不太确定为什么会这样,但我的动画现在又在Safari 6.0.3和Chrome 26.0.1410.43中再次运行