Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么事件侦听器在第一次调用上工作,而在后续调用上不工作?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么事件侦听器在第一次调用上工作,而在后续调用上不工作?

Javascript 为什么事件侦听器在第一次调用上工作,而在后续调用上不工作?,javascript,jquery,Javascript,Jquery,我有一个引导旋转木马,我在第一张幻灯片上隐藏“上一张”按钮,在最后一张幻灯片上隐藏“下一张”按钮,现在我想在第二张幻灯片上取消激活“下一张”按钮(最后是所有带iframe视频的幻灯片),直到iframe视频结束。第一次播放时一切正常,但如果您进入第三张(最后一张)幻灯片,然后使用“上一张”按钮返回幻灯片#2,视频结束时“下一张”按钮将不再激活。我怀疑这是事件监听器的作用域问题,但就是无法解决这个问题 我的代码: .文本幻灯片{ 高度:350px; 文本对齐:居中; 背景颜色:浅蓝色; } 幻

我有一个引导旋转木马,我在第一张幻灯片上隐藏“上一张”按钮,在最后一张幻灯片上隐藏“下一张”按钮,现在我想在第二张幻灯片上取消激活“下一张”按钮(最后是所有带iframe视频的幻灯片),直到iframe视频结束。第一次播放时一切正常,但如果您进入第三张(最后一张)幻灯片,然后使用“上一张”按钮返回幻灯片#2,视频结束时“下一张”按钮将不再激活。我怀疑这是事件监听器的作用域问题,但就是无法解决这个问题

我的代码:


.文本幻灯片{
高度:350px;
文本对齐:居中;
背景颜色:浅蓝色;
}
幻灯片1
谢谢收看!!
$(文档).ready(函数(){
//启动旋转木马
$(“#M1carousel”).carousel({interval:false,wrap:false});
if($(“#slide1”).hasClass(“活动”){//隐藏幻灯片1上的上一个按钮
$('#prev').hide();
}否则{
$('#prev').show();
}
$('#M1carousel')。on('slided.bs.carousel',function(){//在幻灯片转换完成时调用的函数
document.getElementById('nextbtn').disabled=“disabled”;//禁用下一步按钮,直到视频结束
if($(“#slide1”).hasClass(“活动”){//隐藏幻灯片1上的上一个按钮
$('#prev').hide();
$(“#下一步”).show();
document.getElementById('nextbtn')。disabled=false;
}else if($(“#lastslide”).hasClass(“active”){//隐藏最后一张幻灯片上的“下一步”按钮
$(“#下一步”).hide();
$('#prev').show();
}else{//在每张幻灯片上显示除第一张和最后一张以外的两个按钮:
$(“#下一步”).show();
$('#prev').show();
}
});
$('#M1carousel')。on('slide.bs.carousel',function(){//在幻灯片即将转换时调用的函数
if($(“.videoslide”).hasClass(“活动”){
$(“.iframe”).each(函数(){//暂停任何iframe视频
var src=$(this.attr('src');
$(this.attr('src',src);
});	
}
});					
});	
// 2. 此代码异步加载IFrame播放器API代码。
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
var播放器;
函数onyoutubeiframeapiredy(){
播放器=新的YT.player('video1'{
活动:{
//“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
// 4. 当视频播放器准备就绪时,API将调用此函数。
函数onPlayerReady(事件){
event.target.playVideo();
}
// 5. 当播放器的状态改变时,API调用此函数。
//该功能指示当视频结束播放视频时(状态=0),
//“下一步”按钮已启用。
函数onPlayerStateChange(事件){
如果(event.data==0){
document.getElementById('nextbtn').disabled=false;//为什么在第一次之后此操作不起作用???
}
}

设置src属性正在销毁YouTube播放器实例

我在iframe中包含了一条postMessage,但是您应该存储并使用您创建并调用的实际YouTube“player”实例
player.pauseVideo()

这里是JSFIDLE演示:


第二个框架无法在此处查看:www.fuzzman.net/Parents/test.phpWow!谢谢你。它起作用了!我还将尝试实现您关于存储播放器实例的建议。
                    $(".iframe").each(function() {              // Pause any iframe videos
                            //var src= $(this).attr('src');
                            //$(this).attr('src',src);  
            this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
            //player.pauseVideo();
                    });