0

我有一个用于 html5 视频的插件,我目前正在开发它,并希望在网页上单独选择每个视频。它以您通常开始的方式开始:

(函数($){

$.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;

因此,由于我在插件中为每个视频都做,我希望每个视频都会被单独且具体地选择,但事实并非如此。所以如果我想做这样的事情:

$this.play();

这没用。相反,我必须这样做,否则我会收到关于该元素没有该方法的错误:

$this[0].play();

这不适用于插件,因为我需要将其应用于所有视频,而这只会选择页面上的第一个视频。那么我该如何解决这个问题呢?我在等待加载的元数据时也遇到了一些麻烦,这似乎以某种方式弄乱了页面上的所有视频(我假设是因为我必须等待或者是因为我上面提到的相关错误?)

有任何想法吗?

4

1 回答 1

1

.play()是原生 DOM 方法,所以this直接使用:

this.play();

由于您是第一次使用 jQuery 进行包装-this并且只调用- 您会收到错误,因为 jQuery 没有方法。play$thisplay


PS使用$this[0].play()也可以。它不会选择第一个视频,因为它使用回调的this值,each它的集合中只有一个元素......

于 2013-01-31T19:05:40.320 回答