0

私は自分のウェブサイトでファンシー ミュージック プレーヤーを使用しており、以下の形式の複数のプレイリストがあります。

<div class="playlist">
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
</div>
<div class="playlist">
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
</div>
<div class="playlist">
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
   <a href="mysong.mp3" class="fmp-my-track add_link">add this song</a>
</div>

ユーザーが1つのプレイリストのリンクを最初にクリックすると、プレイリストがクリアされ、次のクリックでプレイリストに曲が追加されます。たとえば、ユーザーが最初のプレイリストからリンクをクリックすると、プレイリストがクリアされ、プレイリストに曲が追加されます。このプレイリスト内で次にクリックすると、プレイリストはクリアされません。ユーザーがここで同じ他のプレイリストからのリンクを最初にクリックすると、プレイリストがクリアされ、次に曲が追加されます。これを実現するために以下のコードを使用していますが、機能しません。

$(".playlist").each(function(){
    $(".add_link").one("click", function(){
        $.fancyMusicPlayer.clear();
});
    $(".add_link").click(function(){
        $.fancyMusicPlayer.addTrack(this.href, this.title, this.target,false);
});
});

プレイリストに曲を追加することは正常に機能していますが、最初のクリックでプレイリストをクリアする機能が機能していません。誰でも私を助けることができますか?

4

2 に答える 2

1

セレクターに問題があります。各プレイリストを繰り返し処理し、各プレイリストの各 add_link に動作を割り当てます。しかし、あなたがしているのは、各プレイリストではなく、ページ上のすべての add_link に動作を割り当てることです。$('.add_link') は、反復ごとにページ上のすべてのアイテムを取得します。

代わりにこれを行う必要があります:

$('.playlist').each(function() {
  $(this).find('.add_link').one(...);
  $(this).find('.add_link').click(...);
});
于 2013-08-12T05:52:10.780 に答える
1

新しいクリックが同じプレイリストからのものか別のプレイリストからのものかを確認するには、現在のプレイリストの参照を保持する必要があります。現在のプレイリスト要素には ID がないため、以下のサンプル コードでインデックスを使用しました。

var inPlaylist = 0;
$(".add_link").click(function(){
    var playlistIndex = $(this).parent('.playlist').index();
    if(playlistIndex != inPlaylist){
        $.fancyMusicPlayer.clear();
        inPlaylist = playlistIndex;
    }
    $.fancyMusicPlayer.addTrack(this.href, this.title, this.target,false);
});
于 2013-08-12T05:59:19.037 に答える