Javascript исчезать в исчезают Div с YouTube видео
Я не знаю много JavaScript, но мне интересно, если это возможно:
Мне нужно, чтобы видео было невидимым, и когда я нажимаю одну из моих ссылок, встраивается YouTube (и начинается воспроизведение). Затем, когда я mouseOver и mouseOut, я хочу, чтобы он исчезал, а затем снова появлялся на mouseOver, но я не могу заставить его работать. У меня были разные результаты, когда div исчезал (когда я наводил курсор на то место, где раньше был игрок, ничего не исчезало), и теперь я застрял в этом:
Вот как далеко я продвинулся в поиске решений на stackru:
Вот jsFiddle> http://jsfiddle.net/VKzxy/
И мой JQuery:
/* elt: Optionally, a HTMLIFrameElement. This frame's video will be played,
* if possible. Other videos will be paused*/
function playVideoAndPauseOthers(frame) {
$('iframe[src*="http://www.youtube.com/embed/"]').each(function(i) {
var func = this === frame ? 'playVideo' : 'pauseVideo';
this.contentWindow.postMessage('{"event":"command","func":"' + func + '","args":""}', '*');
});
}
$('#links a[href^="#vid"]').click(function() {
var frameId = /#vid(\d+)/.exec($(this).attr('href'));
if (frameId !== null) {
frameId = frameId[1]; // Get frameId
playVideoAndPauseOthers($('#playlist' + frameId + ' iframe')[0]);
$($('#playlist' + frameId + ' iframe')[0]).fadeIn(750);
//When hovering, fadeIn.
$('#content').mouseenter(function(){
$($('#playlist' + frameId)[0]).fadeIn(750);
});
//When leaving, fadeOut.
$($('#playlist' + frameId)[0]).mouseleave(function(){
$($('#playlist' + frameId)[0]).fadeOut(750);
});
}
});
редактировать: это не должно быть в JavaScript, любое решение, которое будет работать, будет хорошо.
1 ответ
Вам нужно:
приостановить все видео
спрячь их всех
показать желаемое видео
воспроизвести желаемое видео
Ну вот:
НОТА
чтобы эффект затухания работал, вы должны установить wmode на opaque, как в примере с jsfiddle.
src="http://www.youtube.com/embed/a-TrP8Z3Cb8?wmode=opaque& (...)
это позволит изменениям уровня прозрачности в jQuery (на самом деле это то, что происходит при вызове fadeIn или fadeOut), которые также будут отображаться поверх объекта flash. (фактически, когда изменяется непрозрачность iframe).
Вот код JS, который в скрипке
function hideAll()
{
$('#content').children('div').each(function()
{
$(this).hide();
});
}
function fadeAll(strClickId)
{
var elems = $('#content').children('div'), count = elems.length;
elems.each(function()
{
$(this).fadeOut(750, function()
{
$(this).children('iframe')[0].contentWindow.postMessage(
JSON.stringify({
"event": "command",
"func": "pauseVideo",
"args": ""
}), "*"
);
if (!--count)
{
$(strClickId).fadeIn(750, function()
{
$(strClickId).children('iframe')[0].contentWindow.postMessage(
JSON.stringify({
"event": "command",
"func": "playVideo",
"args": ""
}), "*"
);
});
}
});
});
}
$(window).load(function()
{
hideAll();
});
$('#links a[href^="#vid"]').click(function()
{
var frameId = '#playlist' + $(this).attr('href').substr(4);
fadeAll(frameId);
});