我正在尝试使用以下代码行动态更改字幕轨道。但是它没有更改字幕。为什么?
$('#turnoff').click(function(){
$('.player-content-video track').attr('default',false);
});
$('#english').click(function(){
$('.player-content-video track').attr('default',false);
$('.player-content-video track').eq(0).attr('default',false);
});
$('#chinese').click(function(){
$('.player-content-video track').eq(1).attr('default',false);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<video class="player-content-video">
<track src="sample_video-en.vtt" srclang="en" kind="subtitles" default="true">
<track src="sample_video-ch.vtt" default="false" srclang="ch" kind="subtitles">
<source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
<br/>
<button id="turnoff" >NO SUBTITLE</button>
<button id="english" >ENGLISH</button>
<button id="chinese" >CHINESE</button>
&#13;
注意:此示例中的track
src
仅用于代码演示。
答案 0 :(得分:2)
如果您需要更改var host = Dns.GetHostEntry(Environment.UserDomainName);
host.HostName.Dump();
标记的default
属性,可以使用以下脚本:
工作示例,请检查DOM以查看结果(因为视频和轨道src不存在):
https://jsfiddle.net/3hh9kvgd/
您可以通过以下方式使用jQuery track
。
More info can be found here.
:eq() Selector
顺便使用$('.player-content-video track:eq(0)')
使您的代码依赖于DOM中的:eq()
位置,并且当用户点击按钮时需要横向所有DOM,这在术语可维护性和性能方面不是很好的方法
您可以使用id引用<track>
并在使用jQuery时缓存DOM选择。
<track>
$('#turnoff').click(function(){
$('.player-content-video track').attr('default',false);
});
$('#english').click(function(){
$('.player-content-video track').attr('default',false);
$('.player-content-video track:eq(0)').attr('default',true);
});
$('#chinese').click(function(){
$('.player-content-video track').attr('default',false);
$('.player-content-video track:eq(1)').attr('default',true);
});