我有以下代码 -
<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>
单击图像时,我只想要一个警告框。但我得到了多个警报框。有办法吗?
谢谢
答案 0 :(得分:4)
因为您在每个时间间隔都保持连接点击事件。
每个内部你添加另一个事件,它不会覆盖前一个事件。
答案 1 :(得分:1)
尝试移动
$(".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);
...
});