jQuery的。为什么它显示额外的元素?

时间:2015-04-21 22:02:39

标签: javascript jquery youtube elements

此视频在视频达到指定时间时创建元素(我使用的是YouTube iFrame API)。它从来自服务器的json对象数组中获取信息。但是当几乎所有对象在显示和隐藏元素的过程中传递时,它开始按顺序添加到普通元素新元素。我不知道为什么要添加这些元素。

//当播放器准备就绪时,每1000毫秒开始检查当前时间。

function onPlayerReady() {
    function updateTime() {
        var oldTime = videotime;
        if(player && player.getCurrentTime) {
            videotime = +player.getCurrentTime().toFixed();
        }
        if(videotime !== oldTime) {
            onProgress(videotime);
        }
    }
    timeupdater = setInterval(updateTime, 1000);

}

//当时间改变时,将调用它。

function onProgress(currentTime) {
    var ci = array_of_json.length;
    console.log(currentTime);

    for(i = 0; i < ci; i++){
        if(currentTime === array_of_json[i].time) {
            $(document).ready(function(){
                $( '#pos_wrapper' ).prepend( "<div class='emotion " + array_of_json[i].emotion
                + "' style='display: none'></div>" );
                (function(){
                    var selector = 'div.'+array_of_json[i].emotion;
                $(selector).show(1000);
                $(selector).fadeOut(10000);
                })();
                });
    }

}

}

2 个答案:

答案 0 :(得分:1)

我认为你需要添加clearInterval(timeupdater);在这种情况下

if(videotime !== oldTime) {
        onProgress(videotime);
}

或循环将永远不会停止调用你的函数onProgress所以你应该尝试这个

if(videotime !== oldTime) {
        clearInterval(timeupdater);
        onProgress(videotime);
}

答案 1 :(得分:0)

我已经解决了这个问题。我添加了fadeOut回调函数来删除当前元素。