在jQuery插件中分离匹配选择器的元素的状态

时间:2011-10-13 16:36:50

标签: javascript jquery jquery-plugins

演示:http://jsfiddle.net/waitinforatrain/7Uzhg/2/

我正在重写一个jQuery插件,它显示来自.srt文件的字幕。显示字幕的div包含属性data-video(关联的HTML5视频对象的ID)和data-srt(包含字幕文件的网址)。

我的想法是,如果我写

$('.srt').srt();

这将使用类srt。

加载和播放所有元素的字幕

jQuery插件中有一个名为playSubtitles的方法可以完成主要工作。它有一个整数currentSubtitle,它保存当前要播放的字幕的索引。

问题是如果$('.srt')匹配多个元素,它们将共享currentSubtitle变量,而我不确定如何将它们分开。

1 个答案:

答案 0 :(得分:0)

你需要用each包装你的插件代码,这样每个选择器都有自己的变量副本:

$.fn.srt = function() {
   return this.each(function() {
       var currentSubtitle;
       var self = $(this);
       return $.extend(self, {
           playSubtitles: function(...) {
               ...
           }
       });
   });
});