0

私はJQueryが初めてです。以前の投稿を検索しましたが、何も見つかりませんでした。Video Ended Event ハンドラから別の関数を呼び出そうとしています。動いていない。

$(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.       
      });
}

どんな助けでも大歓迎です。ありがとう、

4

3 に答える 3

3

試す

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

これは、関数を評価する代わりに、コールバックとして渡します。

于 2012-12-25T19:35:22.930 に答える
2
$(document).ready(function(){
   $("#video1").on("ended", function() {
    NextFrag();
   });
});

function NextFrag(){
   alert("Hello World");
}
于 2012-12-25T19:36:48.757 に答える
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);
    } 
}
}
于 2012-12-28T15:09:21.380 に答える