Javascript 为什么我的jquery动画在使用浏览器确认和警报时不能在chrome中正常运行?
我看到了一个关于chrome中一些jquery动画的问题。 我想知道是否有其他人看到过这个 我只是想做一些简单的向上滑动来隐藏一个div,或者隐藏然后淡入一个div。 div上的向上滑动动画没有在chrome中发生,并且在淡入开始之前隐藏是滞后的;而在firefox中,动画是即时且平滑的 问题是,我有一个围绕这个东西的浏览器confirm,只有在用户确认的情况下才能做这个动画。 如果我删除确认,动画在chrome中工作良好 奇怪吗 这里有一个例子。有了确认,我就没有滑梯了。没有确认,我得到一个。 也就是说,只需删除if(confirm){}代码块Javascript 为什么我的jquery动画在使用浏览器确认和警报时不能在chrome中正常运行?,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我看到了一个关于chrome中一些jquery动画的问题。 我想知道是否有其他人看到过这个 我只是想做一些简单的向上滑动来隐藏一个div,或者隐藏然后淡入一个div。 div上的向上滑动动画没有在chrome中发生,并且在淡入开始之前隐藏是滞后的;而在firefox中,动画是即时且平滑的 问题是,我有一个围绕这个东西的浏览器confirm,只有在用户确认的情况下才能做这个动画。 如果我删除确认,动画在chrome中工作良好 奇怪吗 这里有一个例子。有了确认,我就没有滑梯了。没有确认,我得到一个。
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');
}
);
}
if(确认('you sure?')){
$('#'+itemId).spin();
WebService.AddItem(itemId,
//成功
功能(r){
var item=$('#'+itemId);//这是一个div
项目1.unpin();
项目
.hide()
.toggleClass('item-added')
.fadeIn('fast',function(){
//创建DOM元素
$(“”)
//将元素的样式设置为“显示:无”
.hide()
//将隐藏元素附加到“posts”元素
.appendTo($('.contentInfo',item))
//将新内容淡入视图
.fadeIn(“快速”);
});
},
//失败
函数(){
$('#'+itemId).unpin();
警报(“失败”);
}
);
}
根据我的推测和例子,有人能证实或反驳这个观点吗?
有哪些浏览器的替代方案
编辑:是的,我不确定发生了什么。您使用的是最新版本的jQuery UI吗?你也有jQueryUI样式表吗?
一切看起来都很好。如果您在这里找不到答案,请打开一个bug报告。更新Chrome可以修复此问题。我现在运行的是15.0.874.120版,一切正常。我的话。几年前我写的一些代码也有同样的经历。现在它在基于webkit的浏览器中有一个问题 我使用confirm()调用暂停了几个动画,随后的动画无法正确显示。我最终发现,如果我在动画之前稍加延迟,它就会正常工作
if (confirm('Are you sure?')) {
dragbox.delay(10).slideUp('fast', function () { ...
我不太清楚为什么会这样,但我的动画现在在Safari 6.0.3和Chrome 26.0.1410.43中再次工作了我使用的是1.6.2,我不确定在这种情况下我是否需要jquery ui样式表。好的,看来浏览器确认了围绕javascript代码的运行,使得jquery动画在某种程度上干扰了动画。。。如果我不使用浏览器确认,动画在chrome中可以正常工作。这在firefox tho中不是问题。我是否正确理解您在动画启动后要求确认?如果用户不确认,是否取消?(我想这就是你所说的“包装”)你能不能不简单地确认然后启动动画?(我想,一个例子在这里可能会有很大帮助)你有jQuery,备选方案:使用jQuery模式对话框(jQuery UI)而不是丑陋的确认器上述代码在firefox和IE中运行良好且一致。