質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

4028閲覧

【jQuery】appendしたvideoタグのイベント操作をしたい

NobumitsuHata

総合スコア141

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/12/29 05:46

編集2016/12/29 05:46

HTML

1 <div id="movie_wrapper"> 2 <label for="movie">動画を選択</label> 3 <input id="movie" type="file" accept="video/*"></input> 4 </div>

javascript

1$(document).ready(function() { 2 3 // フォームデータクラスをインスタンス化 4 var formData = new FormData(); 5 6 // ファイルリーダークラスをインスタンス化 7 var fileReader = new FileReader(); 8 9 10 if (window.matchMedia('screen and (min-width: 992px)').matches) { 11 12 uploadMovie(); 13 test(); 14 15 } else if(window.matchMedia('screen and (max-width: 991px) and (min-width: 0px)').matches) { 16 17 18 19 } 20 21 /********** ここから各イベントごとのメソッドを宣言 **********/ 22 23 function uploadMovie() { 24 $('#movie').on('change', function() { 25 console.log("test"); 26 // .previewの中に入っているmovieタグをremoveする 27 $("#movie_wrapper").children('movie').remove(); 28 console.log($(this).val()); 29 if ('' !== $(this).val()) { 30 // ファイルが選択されている場合 31 32 // formDataにデータを追加 33 formData.append('movie', $(this).prop('files')[0]); 34 fileReader.onload = function() { 35 // ファイル読み込み完了時 36 // 新しい画像をappendする 37 $("#movie_wrapper").append('<video id="movie_preview" preload="auto" controls><source src="' + fileReader.result + '" type="video/mp4"></video>'); 38 // console.log($("video").currentTime); 39 } 40 // 動画読み込み実行 41 fileReader.readAsDataURL($(this).prop('files')[0]); 42 43 } 44 45 }); 46 } 47 48 function test() { 49 $("#movie_wrapper").on('timeupdate', '#movie_preview', function() { 50 console.log("tes"); 51 // if ($(this).currentTime >= 10 ) { 52 // // 10秒以上経過した際の処理 53 // // 動画の長さは$(this)[0].duration 54 // } 55 }); 56 } 57 58});

testメソッドのtimeupdateが機能しません。
clickだとうまくいきます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

<vidoo>は動的に追加されるものなので、動的に追加したイベントを拾うなら、$("#movie_wrapper").append()を行った後に.on('timeupdate', func)を設定しないとダメかと。
(timeupdateイベントはバブリングされないため、$(document).on('timeupdate', '#movie_preview', func) の方法は使用できません。)

投稿2016/12/29 10:00

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NobumitsuHata

2016/12/30 03:59

助かりました。 ありがとうございます!
guest

0

1.動画が完全にロードされる前にtest()している

2.```javascript
$("#movie_wrapper").on('timeupdate', '#movie_preview', function() {

少し書き方が違うかも その他. appendしていくと同じIDが出来てしまい動かなくなる

投稿2016/12/29 10:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問