I inject YouTube iframe to a div in document ready and bind it to click:
jQuery(document).ready(function($) {
jQuery('.video-thumb').click(function(){
...
$('#player').html('<iframe width="761" height="421" src="http://www.youtube.com/embed/' + $(this).attr('videoid') + '?rel=0&wmode=transparent" frameborder="0" allowfullscreen></iframe>');
...
}
}
And I want to do a callback when video ends. I have read about onYouTubePlayerAPIReady, but it has to be put outside document ready.
I have tried to load video player by this construction outside document ready:
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '421',
width: '761',
videoId: '',
playerVars: { autoplay: 1, autohide: 1, showinfo: 0 },
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
but I got some issues:
- showinfo:0 didn't work, still got other video thumbnails in the end
- I don't know how to change video id (and reinit the video?)
- more script errors than first method (injecting iframe)
I prefer using first method, but how to create video ends callback? Thanks.
A working example of the below code is also on jsfiddle.net.
Some notes:
Example Markup
The JavaScript