0

現在取り組んでいる html5 ビデオ用のプラグインがあり、Web ページで各ビデオを個別に選択したいと考えています。通常の開始と同じように開始します。

(関数($) {

$.fn.videoPlayer = function(options) {


    var settings = {  
        playerWidth : '0.95', // Default is 95%
        videoClass : 'video'  // Video Class
    }

    // Extend the options so they work with the plugin
    if(options) {
        $.extend(settings, options);
    }



    // For each so that we keep chainability.
    return this.each(function() {       


        // Basic Variables 
        $this = $(this);
        $settings = settings;

したがって、プラグインで for each を実行しているので、各ビデオが個別かつ具体的に選択されると予想していましたが、そうではありません。したがって、次のようなことをしたい場合:

$this.play();

それは動作しません。代わりに、これを行う必要があります。そうしないと、その要素にそのメソッドがないというエラーが表示されます。

$this[0].play();

これをすべてのビデオに適用する必要があり、これはページの最初のビデオのみを選択するため、これはプラグインでは機能しません。では、どうすればこれを修正できますか?また、ページ上のすべてのビデオを何らかの方法で台無しにしているように見える、loadedmetadata の待機にも問題があります (待機する必要があるため、または上記に関連するエラーのためだと思いますか?)

何か案は?

4

1 に答える 1

1

.play()はネイティブ DOM メソッドであるため、this直接使用します。

this.play();

jQuery にはメソッドがないため、最初に jQuery でラップthisして呼び出しplayているだけなので、エラーが発生します。$thisplay


PS Using$this[0].play()も機能します。コレクション内に 1 つの要素しかないコールバックのthis値を使用しているため、最初のビデオは選択されません...each

于 2013-01-31T19:05:40.320 に答える