提问人:Levi Wallach 提问时间:4/20/2017 最后编辑:Levi Wallach 更新时间:4/20/2017 访问量:335
jplayer 绑定似乎不起作用
jplayer binding doesn't seem to work
问:
我继承了一个使用 jPlayer 的 Web 播放器。它适用于播放音频文件,但是我正在尝试在用户播放曲目时设置一些隐藏字段,并且我似乎无法将某些内容绑定到jPlayer中的任何事件。我使用类似的代码绑定到 h1 标签上的点击事件,它工作正常,但 jplayer 没有。也没有错误。我从 jPlayer 的文档中得到了绑定示例。 这是我正在尝试做的事情的片段:
$(document).ready(function () {
//listener for playing the file
$("#jquery_jplayer_1").bind($.jPlayer.event.play, function (event) {
alert('play');
});
});
这是我的html:
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio" >
<div class="jp-type-single">
<div id="htmlPlayer" style="display: none">
<audio id="audioPlayer" controls style="width:100%;">
<source id="mp3Source" type="audio/mp3" />
</audio>
</div>
<div class="htmlHidePoint" style="display: none">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<li><a href="javascript:;" onclick="javascript:alert('test');" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
</ul>
</div>
</div>
</div>
<div class="jp-title">
<ul>
<li><span id="songname">No Song Selected</span></li>
</ul>
<div class="under">
<ul>
<li><a href="#" onclick="ViewTranscript();return false;" onkeypress="ViewTranscript();return false;" tabindex="2">Transcript</a></li>
<li><a href="#" onclick="ViewDowloadOptions();return false;" onkeypress="ViewDowloadOptions();return false;" tabindex="2">Download</a></li>
</ul>
</div>
</div>
<div class="htmlHidePoint" style="display: none">
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/">Flash plugin</a>.
</div>
</div>
</div>
</div>
实际的源文件是通过 jPlayer 方法中的 error 选项加载的:
error: function (event) {
if (event.jPlayer.error.type == 'e_url_not_set') {
$(this).jPlayer("setMedia", {
mp3: '<%=ResolveUrl("~/Handlers/Podcasts.ashx") %>?command=ZipPodcast&PodcastID=' + selectedPodcast.ItemID + '&options=audio'
});
$(this).jPlayer("play");
}
},
答:
0赞
Martin Dawson
4/20/2017
#1
显示 jPlayer 的 html。确保 ID 正确无误。
请尝试在选项上指定它:
$("#jquery_jplayer_1").jPlayer({
play: function() {
alert('hi');
}
});
你是在使用选项初始化 jPlayer 之前还是之后进行绑定?
绑定时 jPlayer 是否在页面上?
评论
0赞
Levi Wallach
4/20/2017
是的,我尝试了两种方式。我要暂时附上我的html
0赞
novalagung
4/20/2017
#2
你的代码没有错,你创建事件的方式是正确的,通常会弹出。alert('play')
尝试将语句放在 jPlayer 实例化下。如果它不起作用,可能是因为由于某些原因,实例化没有成功。也许用于获取 DOM 的选择器是错误的,等等......
$("#jquery_jplayer_1").jPlayer()
$("#jquery_jplayer_1").bind($.jPlayer.event.play, function (event) {
alert('hi');
});
还要尝试将事件作为方法上的一个选项,正如 Martin Mazza Dawson 在回答中提到的jPlayer()
评论
0赞
Levi Wallach
4/20/2017
是的,Iv'e 尝试在选项中添加一个 play: 项目,但这也不会产生警报。我还将绑定语句移到了 jplayer 实例化下方,但仍然无法执行
评论