Javascript 在单击时对 setInterval 不起作用

Javascript on click not working for setInterval

本文关键字:setInterval 不起作用 单击 Javascript      更新时间:2023-09-26

我有以下代码 -

 <html>
<head>
<title>Rebound</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">

    function ShowRandom() {
        var $span = $(".random");
        var oldTop = 0;
        var oldLeft = 0;
        var leftPos = 10;
        var topPos = 10;
        var flag = true;
        $(".random").on("click", "#lion", function(event) {
                alert(event.target.id);
            }); 
        $span.fadeOut(500, function() {
            var maxLeft = $(window).width() - $span.width();
            var maxTop = $(window).height() - $span.height();
            oldTop = topPos;
            oldLeft = leftPos;
            leftPos = Math.floor(Math.random() * (maxLeft + 1));
            topPos = Math.floor(Math.random() * (maxTop + 1));          
            $span.css({ left: leftPos, top: topPos }).fadeIn(500);
        });
    };
    ShowRandom();
    setInterval(function(){         
        $('.random').append("<span class='lab'></span>");
        ShowRandom(); 
    }, 1500);
     $('.random').delegate('.lab', 'click', function() {
        $('.random').remove('.lab');
        alert('single event trigger');
    });

</script>
<style>
    span { 
        display: inline-block; 
        position: absolute;
    }
</style>
</head>
<body>
    <div id="container">
        <span class="random"><img src="lion.jpg" width="50px" height="50px" id="lion"></span>
    </div>
</body>
 </html>

当我点击图像时,我只需要一个警报框。但是我收到多个警报框。有没有办法解决它?

谢谢

因为你在每个时间间隔都不断挂接点击事件。

每个内部您添加另一个事件,它不会覆盖前一个事件。

尝试移动

$(".random").on("click", "#lion", function(event) {
     alert(event.target.id);
}); 

在 ShowRandom 函数之外。

前任:

function ShowRandom(){...};
$(function(){
   $(".random").on("click", "#lion", function(event) {
         alert(event.target.id);
    }); 
    ShowRandom();
    setInterval(function(){
        $('.random').append("<span class='lab'></span>");
        ShowRandom(); 
    }, 1500);
    ...
});