我不知道很多javascript,但我想知道这是否可行:
我需要视频不可见,当我按下我的一个链接时,youtube嵌入淡入(并开始播放)。然后当我mouseOver和mouseOut我希望它淡出然后能够在mouseOver上再次淡入,但我不能让它工作。我有不同的结果,其中div似乎消失了(当我将鼠标放在玩家曾经没有消失的地方时),现在我坚持这个:
以下是我在这里找到解决方案的stackoverflow的目的:
这是一个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中,任何有效的解决方案都可以。
答案 0 :(得分:3)
你需要:
暂停所有视频
隐藏所有
显示所需视频
播放所需的视频
在这里:
注意强>
要使淡入淡出效果起作用,你必须将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);
});