私のウェブサイトには YouTube 動画のリストがあり、各リスト アイテムは次のようになります。
<div class="video_item" id="<YouTubeVideoID>">
// video thumbnail and information
</div>
ユーザーがこれらのビデオ アイテムのいずれかをクリックすると、パネルがドロップ ダウンし、パネルがスライド アクションを完了すると、API をロードしてビデオ プレーヤーを表示する必要があります。
$(document).ready(function(e) {
$('.video_item').live('click', function() {
var vid_id = $(this).attr('id');
if (vid_id) {
$("html").animate({ scrollTop: $('#main').offset().top-20 }, 1000, function() {
setTimeout(function() {
$('.video_drop_panel_wrap').slideDown('slow', function() {
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('youtube_player', {
height: '371',
width: '570',
videoId: vid_id,
events: {
'onReady': onPlayerReady
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
});
},1000);
});
}
});
});
問題は、プレーヤーが表示されず、JS 開発者コンソールにエラーが表示されないことです。すべてのスライド ダウン パネルを使用せずに API とプレーヤーをテストしましたが、うまくいきました。それがDOMの問題なのか、それ以外の問題なのかはわかりません。誰かが私が間違ったことを見つけた場合は、平手打ちをいただければ幸いです...ああ、何が間違っていたのか教えてください。