-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaudioab.js
84 lines (60 loc) · 2.75 KB
/
audioab.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
$.fn.audioab = function( options ) {
return this.each(function() {
var items = [];
var active = null;
var $e = $(this);
$.map(options.classes, function(c){
var button = $e.find('a.'+c);
var element = $e.find('audio.'+c);
var item = {};
element.mediaelementplayer({
audioWidth: '290',
success: function(api){
item['api'] = api;
}
});
var container = $e.find('.mejs-container.'+c);
item['container'] = container;
item['element'] = element;
item['button'] = button;
items.push(item);
container.css({top: '50px'});
button.on('click', function(e){
e.preventDefault();
var $b = $(this);
if(active != item){
container.css({top: 0, position: 'absolute'});
$b.removeClass('btn-default').addClass('btn-success').addClass('active');
if(active){
active.button.removeClass('active').removeClass('btn-success').addClass('btn-default');
active.container.css({top: '50px'});
var currentTime = 0;
try{
currentTime = active.api.currentTime;
item.api.setVolume(active.api.volume);
}catch(err){
}
var paused = active.api.paused;
if(!paused){
active.api.pause();
$(item.api).one('playing', function(){
try{
item.api.setCurrentTime(currentTime);
}catch(err){
}
});
item.api.play();
}else{
try{
item.api.setCurrentTime(currentTime);
}catch(err){
}
}
}
active = item;
}
});
});
items[0].button.trigger('click');
});
};