2015-07-20 81 views
0

我想嵌套淡入淡出方法以获得以下效果。我希望10个独立标签中的字符逐个淡出,改变文本然后淡入。用我所了解的回调函数,下面的代码应该可以实现,但是现在我得到的效果是所有元素同时发生变化,文字变化不会等待淡出,导致文本闪烁,然后淡出和进入。我在做什么错了!这是我目前的简化版本。jquery .fadein .fadeout回调嵌套没有正确排序

HTML/PHP:

<?php 
echo '<div onclick="addname(this)">'; 
for ($i=0; i<10; i++){ 
    echo '<h1 id="temp'.$i.'">Y</h1>'; 
} 
?> 

的Javascript

function addname(item){ 
    //Other stuff that works fine 
    hideChar(0); 
} 
function hideChar(i){ 
    if(i<10){ 
     var tag = "temp" + i; 
     var x = document.getElementById(tag); 
     $(x).fadeOut(200, showChar(i)); 
    } 
} 
function showChar(i){ 
    var tag = "temp" + i; 
    var x = document.getElementById(tag); 
    var j = i+1; 
    $(x).html("X"); 
    $(x).fadeIn(200, hideChar(j)); 
} 

回答

2

你不通过你的函数作为回调正常。当包括() - 该函数将被立即触发 - 省略()传递下去吧:

$(x).fadeOut(200, showChar); 

默认的参数会被传承下去。如果你需要比默认的其他东西 - 你将不得不使用匿名函数来调用你的:

$(x).fadeOut(200, function() { 
    showChar(i) 
}); 
+0

如何传递的功能 – SeanBallentine

+0

@SeanBallentine一个参数 - 在编,以包括。 – tymeJV

+0

而匿名函数会等待吗?谢谢! – SeanBallentine