2013-06-04 51 views
0

我想重複播放的下列行爲:http://kolber.github.io/audiojs/demos/test6.html我能夠做的一切,除了此位(您可以檢查完整的代碼頁源)難度在仿型表現出與不同的標記行爲

// Setup the player to autoplay the next track 
     var a = audiojs.createAll({ 
      trackEnded: function() { 
      var next = $('ol li.playing').next(); 
      if (!next.length) next = $('ol li').first(); 
      next.addClass('playing').siblings().removeClass('playing'); 
      audio.load($('a', next).attr('data-src')); 
      audio.play(); 
      } 
     }); 

一個演示頁面有如下結構:

<ol> 
    <li class="playing"> 
    <a href="#" data-src="http://s3.amazonaws.com/audiojs/01-dead-wrong-intro.mp3">dead wrong intro</a> 
    </li> 

    <li class="playing"> 
    <a href="#" data-src="http://s3.amazonaws.com/audiojs/01-dead-wrong-intro.mp3">dead wrong intro</a> 
    </li> 

    <li class="playing"> 
    <a href="#" data-src="http://s3.amazonaws.com/audiojs/01-dead-wrong-intro.mp3">dead wrong intro</a> 
    </li> 

    <!-- Etc --> 
</ol> 

但是我的網頁的結構如下:

<div class="main"> 
    <article class="article> 

    <!-- .. --> 
    <div class="article-footer> 
     <ul> 
     <li> 
      <a class="article-play" href="#" data-src="http://somesongurl.com/file.mp3"></a> 
     </li> 
     </ul> 
    </div> 

    </article> 
</div> 

因此,在每篇文章中都有類文章播放的錨標籤,這些在演示頁面裏面的定位標籤的作用相同<ol>所以我想自動播放每個錨標籤,問題是它們不在<ol>之內,而是在實際單獨文章。我嘗試這樣做:

  // Setup the player to autoplay the next track 
      var a = audiojs.createAll({ 
      trackEnded: function() { 
       var next = $('.main a.playing').next(); 
       if (!next.length) next = $('.main a.article-play').first(); 
       next.addClass('playing').siblings().removeClass('playing'); 
       audio.load($('.article-play', next).attr('data-src')); 
       audio.play(); 
      } 
     }); 

但它不工作,一旦樂曲播放結束,並應該切換到內部音頻標籤下一個SRC成爲src="undefined"我是新來的jQuery,可能不知道如何實施正確的結構,所以我要求社區尋求幫助。

編輯在每個.article-footer div內部還有其他帶有錨標記的列表元素。因此,玩家的src需要專門從主播中查找.article-play

回答

0

next()正在獲取元素的下一個兄弟。在你的代碼中,你試圖獲得錨標籤的下一個兄弟,但是在一個列表項中只有一個錨元素。您可以解決此問題,將「正在播放」類添加到列表項而不是錨標記,然後您的播放器應按預期工作。

所以不是這樣:

var next = $('.main a.playing').next(); 

使用此:

var next = $('.main li.playing').next(); 

因此,該列表項將得到 '打' 級,你將能夠訪問下一個列表項目。

jQuery文檔:http://api.jquery.com/next/

相關問題