2015-07-20 79 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