2013-03-07 128 views
0

我有两个功能一起工作。一个到​​一个可见的文章,一个到fadeIn()一个新的后一个完成褪色。不知何故,第二个功能不会等待第一个完成。我的代码如下:FadeOut回调不会等待完成

itemFadeTo: function(item) { 

    $('#item_container article:visible') 
    .stop(true, true) 
    .fadeOut(750, $().itemFadeIn(item)); 

}, 

itemFadeIn: function(item) { 

    $(item) 
    .css({ opacity: 0 }) 
    .show() 
    .stop(true, true) 
    .animate({ opacity: 1}, 750); 

} 

调用如下:

var new_item= $('article#new_item'); 

$().itemFadeTo(new_item); 

任何帮助将不胜感激!

感谢, Knal

+0

是否有任何理由为什么你不使用内置的淡入方法? – Nobita 2013-03-07 10:31:50

+0

有可能文章不会总是偏离“不透明:0”。我想这会给我更多'控制'。 – knalpiap 2013-03-07 10:51:08

回答

0

的问题是,.fadeOut()需要一个函数作为其第二个参数,但你不能传递一个函数,你调用一个函数并传递其结果作为第二个参数:

.fadeOut(750, $().itemFadeIn(item)); 

因此,这意味着该$().itemFadeIn(item)部分调用.fadeOut()之前发生

试试这个:

.fadeOut(750, function() { $().itemFadeIn(item); }); 
+0

感谢您的回复。我一直在尝试这个,但不知何故,它不会叫任何东西。甚至替换'function(){$()。itemFadeIn(item); }'用'function(){alert('yeehaw!')}'不会给出结果。 – knalpiap 2013-03-07 10:49:23

+0

这很奇怪。你能在http://jsfiddle.net上提供演示吗?为什么你的淡出工作在带有$('#item_container article:visible')'的硬编码选择器上,但是你对'$()。itemFadeIn()'的调用使用'item'参数? – nnnnnn 2013-03-07 10:54:34

+0

因为我总是想'fadeOut()'可见的文章,所以'fadeIn()'的项目不同。 – knalpiap 2013-03-07 10:57:36