【问题标题】:Add active class to LI element in audio player将活动类添加到音频播放器中的 LI 元素
【发布时间】:2014-12-15 23:28:29
【问题描述】:

我正在开发我的音频播放器,我已经到了我想为当前正在播放的任何歌曲添加一个活动类的部分。但是我有点困惑,因为在歌曲以我的 ul(li's)结尾后,我似乎无法正确挂钩当前正在播放的歌曲。

这是指向我的私人域的链接,因此您可以更清楚地了解。我希望它不被视为广告,我在域上没有任何东西,但我的测试和项目:Link

所以每次点击一首歌曲,LI 都会得到一个“活跃”类,但是如果歌曲结束,后面的歌曲就没有“活跃”类

JSFiddle HERE

好的,如果有帮助,我这里加个尾声功能:

// Events linstener
audio.addEventListener("ended", function() { switchTrack(); });

// Functions
function switchTrack(event){
    $("ul li").removeClass('active');
    if(index == (obj.songsrc.length - 1)){
        index = 0;
    } else {
        index++;    
    }
    playlist_status.innerHTML = obj.title[index];
    playlist_song.innerHTML = obj.songs[index];
    playlist_coverimage.src = "images/"+obj.images[index]+".jpg";
    audio.src = dir+obj.songsrc[index]+ext;
    audio.play();
}

这就是我创建 LI 的方式:

for(var i = 0; i < obj.songsrc.length; i++) {
    li = document.createElement("li");
    li.className = "songs_wrap";
    li.innerHTML = "<div class='songs_inner'>" + "<h4>"+obj.title[i]+ "</h4><p>" + obj.songs[i] + "</p></div>";
    mylist.appendChild(li);
    if(audio.play)
    $("li:nth-child(1)").addClass("active");
}

【问题讨论】:

  • 带有“if(audio.play)”的行缺少一个开括号。应该是:if(audio.play) { $("li:nth-child(1)").addClass("active");}
  • 没错,但它的行为仍应如此。问题出在 switchTrack 函数中,我应该将活动类添加到当前的 LI 播放中。

标签: javascript jquery audio-player


【解决方案1】:

您可能想为您的音频对象添加一个监听器。

audio.addEventListener('ended', function(e) { // do some class swapping });

或类似Media events 的东西。

【讨论】:

  • 我忘记在此处添加它,但是它已添加到我的代码中。因此,该函数的行为应有尽有,除了当前正在播放的 LI 上激活的活动类之外,一切正常。请看一下链接。
  • 您是否有更多代码可以分享,以便更轻松地查看您已有的内容?也许在一个 jsfiddle 中。
  • 完成,添加了 JSFiddle
  • 这太复杂了还是我的问题回答错了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
相关资源
最近更新 更多