2012-05-02 33 views
0

我知道關於this issue in tumblr,代碼被剝離和音頻播放器被打破。Javascript打破音頻播放器

我現在使用flexslider.js,但問題幾乎相同。我這個

setTimeout(function() {       
       $('.audio').each(function(){ 
        var audioID = $(this).parent().attr("id"); 
        var $audioPost = $(this); 
        $.ajax({ 
         url: '/api/read/json?id=' + audioID, 
         dataType: 'jsonp', 
         timeout: 50000, 
         success: function(data){ 
          if ($audioPost.html().indexOf("is required to") != -1) { 
          $audioPost.append('<div style=\"background-color:black;">' + data.posts[0]['audio-player'] +'</div>'); 
           } 
          } 
        }); 
       }); 
      }, 2000); 

您需要調整您的瀏覽器窗口中看到這一點,因爲我開始從移動版本編碼,反正固定它...它看起來不錯的永久頁面http://tmbeta.tumblr.com/post/21264072020但它沒有做的時候的photosets (使用flexslider)和玩家在同一頁http://tmbeta.tumblr.com/

看看玩家如何被添加到帖子的底部?我希望它出現在[閃存9需要收聽音頻]的地方。我知道這基本上是.append所做的,但我對jquery不夠熟悉,所以我非常努力地尋找解決方案。

回答

1

查看您的HTML,結果並不令人驚訝:您正在將append()作用於具有類audio的元素,即<article>。 jQuery將您的新div附加到該範圍的末尾 - 這是文章的底部。你需要改變你的元素插入的範圍,無論是

  1. 遍歷audio-player類,而不是audio的元素,即

    $('.audio-player').each(function(){ … } 
    

    由於這種改變的this範圍,你也將有調整線檢索交ID來查找元素層次,即

    var audioID = $(this).parents('.audio').attr('id'); 
    

  2. 範圍界定你的元素插入到播放器元件本身,即

    $audioPost.find('.audio-player').append('<div style=\"background-color:black;">' + data.posts[0]['audio-player'] +'</div>'); 
    

    如果您想替換元素內的span,而不是追加到它,所以你的播放器取代閃存警告,請

    $audioPost.find('#audio_player_'+audioID).replaceWith('<div style=\"background-color:black;">' + data.posts[0]['audio-player'] +'</div>'); 
    

    改爲。

回答編輯,經過一些試驗和錯誤現場測試通過聊天;請忽略評論主題。

+0

謝謝!試過,但現在它說「未定義」。 – Barbara

+0

@Barbara:你必須調整你的'audioID'範圍--''''''''''''''''''''''''''''''''''''''''''''''''''''''''''嘗試將第3行更改爲'var audioID = $(this).parent()。attr(「id」);'。 – kopischke

+0

完成。必須是別的東西,它仍然說未定義。 – Barbara