Я пытаюсь перечислить несколько треков на одной странице с помощью Soundcloud API. Я хочу перебрать каждый DIV, чтобы он извлекал правильные отдельные данные, используя ссылку API /tracks
. Однако он просто извлекает одни и те же данные в каждый div (то же произведение, тот же звук и т. Д.). Если я делаю консольный журнал переменной для ссылки на идентификатор API /tracks
, тогда она корректно перебирает каждый div и правильно перечисляет разные идентификаторы. Почему он вытягивает правильные идентификаторы, но затем извлекает дубликаты данных?Каждый цикл, возвращающий повторяющиеся данные из Soundcloud API
$(document).ready(function() {
// Loop over each mix
$(".mix").each(function(){
// Set the mix ID as a variable
var mixID = $(this).data("mix");
// Test it's getting correct unique track ID's
console.log($(this).data("mix"));
// Get the track meta data
SC.get('/tracks/'+mixID+'', function(track) {
var artwork = track.artwork_url;
var artwork = artwork.replace('-large', '-t500x500');
$(".mix__user").html(track.user.username).attr("href", track.user.permalink_url);
$(".mix__artwork").attr("src", artwork);
$(".mix__waveform").attr("src", track.waveform_url);
});
// Stream the track
SC.stream('/tracks/'+mixID+'', function(sound) {
var is_playing = false;
// Track controls
$('.mix__control').click(function(e) {
e.preventDefault();
if(is_playing === false){
sound.start();
is_playing = true;
$(this).toggleClass("is_playing").html("Pause");
} else if (is_playing === true) {
sound.pause();
is_playing = false;
$(this).toggleClass("is_playing").html("Play");
}
});
});
});
});
Существует несколько Craft CMS язык шаблонов в HTML.
{% for entry in craft.entries.section('mix') %}
<article class="mix" data-mix="{{ entry.mixId }}">
<div class="mix-meta">
<button class="mix__control ss-icon">Play</button>
<img class="mix__artwork" src="">
<img class="mix__waveform" src="">
</div>
<a href="{{ entry.url}}" class="mix-wrap">
<h1 class="mix__title">{{ entry.title }}</h1>
<time class="mix__date" datetime="2008-02-14 20:00">{{ entry.postDate.format('d F Y') }}</time>
<ol class="mix__tracklist">
{% for block in entry.tracklisting %}
{% if block.type == "tracklist" %}
<li><span class="mix__artist">{{ block.artist }}</span> - <span class="mix__track">{{ block.track }}</span></li>
{% endif %}
{% endfor %}
</ol>
</a>
</article>
{% endfor %}
Я думаю, что вы правы, однако «это» в вашем примере возвращается [Окно объекта], как противостоять родительскому «смеси» –
я вижу. SC.get() - это вызов ajax, который меняет наш контекст. Хорошо. Давайте обернем этого плохого мальчика в закрытие. См. Обновление моего ответа. –
Lifesaver. спасибо –