Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 events 事件顺序不符合预期_Javascript Events_Jquery - Fatal编程技术网

Javascript events 事件顺序不符合预期

Javascript events 事件顺序不符合预期,javascript-events,jquery,Javascript Events,Jquery,我有一个图像动画代码集,所以它发生在某些页面更新事件。它按预期工作。由于更新可能会失败,我不希望动画永远播放,我希望每当用户单击任何位置或按下某个键时,动画都会停止。对于按键事件,它正在工作,如下所示: <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script

我有一个图像动画代码集,所以它发生在某些页面更新事件。它按预期工作。由于更新可能会失败,我不希望动画永远播放,我希望每当用户单击任何位置或按下某个键时,动画都会停止。对于按键事件,它正在工作,如下所示:

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function RefreshImg() {
            var src = $('#ocupado').attr('src');
            $('#ocupado').attr('src', src);
        }

        function processando() {
            $processando = $('#processando');
            $processando.css('z-index', '100').fadeTo('fast', 0.5);
            var left = Math.floor(($processando.outerWidth() - 32) / 2);
            var top = Math.floor(($processando.outerHeight() - 32) / 2);
            $('#ocupado').css('left', left).css('top', top);
            setTimeout(RefreshImg, 50);
            $(document).on('keypress', (function () {
                $processando.fadeOut('fast').css('z-index', '-100');
                $(this).off('keypress');
            }));
        }
    </script>
</head>
<body>
    <div id="processando" style="border:0;position:fixed;display:none;z-index:-100;width:100%;height:100%;background:black;top:0px;left:0px;">
    <img id="ocupado" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" width="32" height="32" style="position:relative;" border="0" alt="imagem de espera" />
    </div>
    <select id="mySelect"><option>1</option><option>2</option></select>
    <script type="text/javascript">
        $('#mySelect').change(processando);
    </script>
</body>
</html>
现在,只要用户更改“选择”选项,动画就会开始和停止。这就好像单击事件发生在更改事件之后。如何使动画仅在选择更改后的第一次单击时停止?

我认为jQuery blur()函数可以实现您想要的功能。请参见此处的更新代码:

正如您所看到的,您还可以在按下键时触发模糊。

我认为jQuery blur()函数可以执行您想要的操作。请参见此处的更新代码:


如您所见,您还可以在按下键时触发模糊。

两条注释:1。将
$('body')
更改为
$(文档)
2。在
setTimeout
中使用函数引用,如
setTimeout(刷新img,50)@Vega在这里完成,并在真实代码中完成。两条注释:1。将
$('body')
更改为
$(文档)
2。在
setTimeout
中使用函数引用,如
setTimeout(刷新img,50)@Vega在这里完成了,我明白了。我添加了keydown事件,因为您提到您希望它在用户单击任意位置或按键时工作。是的,行是可选的。Blur函数之所以有效,是因为它在用户“聚焦”任何其他DOM元素时触发。请看一看,我明白。我添加了keydown事件,因为您提到您希望它在用户单击任意位置或按键时工作。是的,行是可选的。Blur函数之所以有效,是因为它在用户“聚焦”任何其他DOM元素时触发。请看一看
            $(document).on('keypress click', (function () {
                $processando.fadeOut('fast').css('z-index', '-100');
                $(this).off('keypress click');
            }));