Jquery fadeIn在fadeOut的回调中不持久

时间:2014-06-08 16:20:27

标签: javascript jquery setinterval fadein fadeout

希望有人可以为我解释这个问题....我正在使用setInterval来交替在网页上显示标题。它淡出前一个,然后在回调函数中淡入新的一个。它过去工作正常,但我将回调函数与fadeOut分开,因为我想最初没有延迟地运行它,现在我得到了初始标题,但是当需要更改时,它们会淡入分割第二,又消失了。

       function processSidebar(data) {
            var headlines = $.parseJSON(data);
            var sIndex = 0;

            function newSidebar(surl, sIndex) {
                $(".sidebar").html(headlines[sIndex].date + '<br><a href="' + surl + '">' + headlines[sIndex].line + '</a>');
                $(".sidebar").fadeIn(400);
            }
            newSidebar("getme.php?blog=1&headline=1", sIndex);

            setInterval(function() {
                ++sIndex;
                if (sIndex == headlines.length) {sIndex = 0}
                var surl="getme.php?blog=1&headline=" + headlines[sIndex].index;
                $(".sidebar").fadeOut(400,newSidebar(surl,sIndex));
            }, 10000); // end setInterval

        }; // end processSidebar

1 个答案:

答案 0 :(得分:1)

jQuery&#39; fadeOut想要一个函数作为complete参数。

您正在提供newSidebar(surl,sIndex),它会立即进行评估并且不会返回任何内容(但会返回整个fadeIn内容。)

您想使用匿名函数:

  

$(&#34; .sidebar&#34;)。fadeOut(400,function(){newSidebar(surl,sIndex)});