来自JQuery事件处理程序的函数调用

时间:2012-12-25 19:28:59

标签: jquery

我是JQuery的新手。我搜索过以前的帖子但找不到任何内容。我试图从视频结束事件处理程序调用另一个函数。它不起作用。

$(document).ready(function(){
   // doing something
   $("#video1").bind("ended", NextFrag());
});

function NextFrag(){
   Window.alert("Hello World");
}

这不起作用。我看不到任何警告打印“Hello World”。

基本上我需要解决上述问题才能完成以下任务。我想播放不同的视频片段。算法应该是这样的:

$(document).ready(function(){
   NextFrag();
});

function NextFrag(){

   // IF First FRAGMENT do this
      $("#video1").html('<source src="FirstURLFromArray.mp4" type="video/mp4"></source>' );

    // ELSE DO THIS
      $("#video1").bind("ended", function(){
         $("#video1").html('<source src="NextURLFromArray.mp4" type="video/mp4"></source>' );
         NextFrag();    // call itself again.       
      });
}

任何帮助将非常感谢。 谢谢,

3 个答案:

答案 0 :(得分:3)

尝试

$("#video1").bind("ended", NextFrag);

这会将函数作为回调函数传递,而不是对其进行评估。

答案 1 :(得分:2)

$(document).ready(function(){
   $("#video1").on("ended", function() {
    NextFrag();
   });
});

function NextFrag(){
   alert("Hello World");
}

答案 2 :(得分:0)

感谢您的帮助。 我刚刚完成了任务。我做了类似的事情并且正在发挥作用。

var index = 0;
$(document).ready(function(){
NextFrag();
});  

function NextFrag(){
if (index < url.length){
    if(index == 0 )
    {
        //The only difference for index=0 is that the player is not autoplay  
        $("#video1").html('<source src= " '+ url[index] + '" type="video/mp4"></source>' );
        index++;
        $("#video1").bind( "ended", NextFrag);

    }else
    {
         $("#VideoContainer").html('<video  id="video1" controls autoplay > "<source src= "'+ url[index]+ '" type="video/mp4"></source> </video>' );
         index++;
         $("#video1").bind( "ended", NextFrag);
    } 
}
}