Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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,我只是想和你们核实一下我写的是否正确。我试图做的是在用户“暂停”/“完成”视频时进行监听。第一个视频正确运行complete()和pause(),并在控制台日志中正确输出,但当我测试第二个视频时,complete()和pause()在控制台日志中没有显示任何内容。我想知道是不是因为我有(2)个绑定函数导致了这个问题。如果有人能帮助我,或者如何写得更好,我将不胜感激 ( function(window, document, $, undefined) { function comple

我只是想和你们核实一下我写的是否正确。我试图做的是在用户“暂停”/“完成”视频时进行监听。第一个视频正确运行complete()和pause(),并在控制台日志中正确输出,但当我测试第二个视频时,complete()和pause()在控制台日志中没有显示任何内容。我想知道是不是因为我有(2)个绑定函数导致了这个问题。如果有人能帮助我,或者如何写得更好,我将不胜感激

( function(window, document, $, undefined) {

     function complete(){
         // do something here
         console.log('video completed');
     }

     function pause(){
         // do something here
         console.log('video paused');
     }

     // 1st video
     $('.short .player').bind({
         ready: function(e) {
             e.preventDefault();
             // do something here
             complete();
             pause();
         }
     });

     // 2nd video
     $('.long .player').bind({
         ready: function(e) {
             e.preventDefault();
             // do something here
             complete();
             pause();
         }
     });

})(window, document, jQuery);
///////////////////////更新的/////////////////////////

( function(window, document, $, undefined) {

     function complete(){
         // do something here
         console.log('video completed');
     }

     function pause(){
         // do something here
         console.log('video paused');
     }

     // 1st video
     $('.short .player').one({
         click: function(e) {
             e.preventDefault();
             // do something here
             complete();
             pause();
         }
     });

     // 2nd video
     $('.long .player').one({
         click: function(e) {
             e.preventDefault();
             // do something here
             complete();
             pause();
         }
     });

})(window, document, jQuery);

不,有两个绑定函数与此无关。您绑定到的
ready
事件可能会导致问题。jQuery有一个特例,将其重定向到
$(document).ready
,因此它根本就不会真正监听视频准备就绪。我决定使用ready事件,因为我只想知道用户单击(播放)视频时的“一次”。有没有办法解决这个问题?第一个视频是done()和pause()。第二个视频没有读到它。谢谢你的帮助,我会继续努力,希望有人能帮我。我只知道准备好的活动可能不是你需要的。为什么一个触发而另一个不触发很奇怪。。。更新:我没有使用.bind(),而是通过单击函数将其更改为.one()。这似乎更合理,因为我只想听到用户在视频上单击一次,这样我就知道他们何时观看了视频,但第二个视频中仍然没有运行这两个函数(pause(),complete())。