jquery 事件执行两次问题

时间:2022-01-26 18:50:52
郁闷,最近碰到个问题,自己找不到问题。
jquery请求后台得到数据 生成一个表格
 $("#tabor").append("<tr id= "+jsonarr[i].targetID+" align='center'>"
                     +"<td>"+jsonarr[i].vin+"</td>"
         +"</tr>");

用$('#tabor').on('click','tr',function() { 
  var targetID = this.id; //targetid
  alert(targetID);
这个绑定了一个事件,正常情况点击一下,是会弹出jsonarr[i].targetID。

但是 另外我还有一个timer1 = setInterval(function(){。。。})这个方法,用于循环的请求后台,得到数据之前会将之前的表格remove()删除掉,然后重新生成。问题就在这 在刷新的时候 点击表格 会弹出2次,甚至3次 jsonarr[i].targetID   这是为什么?
分不多了 抱歉。。

9 个解决方案

#1


楼主是刷新页面的时候吗? 

#2


在刷新的时候 点击表格
只有在刷新的时候的时候出现这种问题吗?


最好在更新table的时候,禁用到tr的click事件,更新完毕后,再启用。可能会发生冲突。也是我的猜测。

#3


写的问题吧  我写过这样的功能 ,没出现你这种情况。 代码贴出来看看

#4


timer1 = setInterval(function(){。。

//生成表格代码 

之后绑定事件,这样应该就好了

$('#tabor').on('click','tr',function() { 
  var targetID = this.id; //targetid
  alert(targetID);


。})

#5


检查下是不是每次重建表格的时候又重新绑定了一次事件.
还有在事件里调用event的stopPropagation和preventDefault方法再重新尝试一下.

#6


引用 1 楼 zhangxiaojie0321 的回复:
楼主是刷新页面的时候吗? 


不仅仅是刷新过程中,就是结束刷新了,别的事件还会执行不止一次。

#7


引用 2 楼 shnulaa 的回复:
在刷新的时候 点击表格
只有在刷新的时候的时候出现这种问题吗?


最好在更新table的时候,禁用到tr的click事件,更新完毕后,再启用。可能会发生冲突。也是我的猜测。


不止 在结束刷新之后 点击表格 也会出现。

#8


引用 4 楼 u012463264 的回复:
timer1 = setInterval(function(){。。

//生成表格代码 

之后绑定事件,这样应该就好了

$('#tabor').on('click','tr',function() { 
  var targetID = this.id; //targetid
  alert(targetID);


。})



我试试

#9


把整个表格都绑定事件了,点击表格当然是有id属性的每一行都会触发事件,所以会弹出多次,可以试下下面的代码:

<script>
    $(function(){//页面加载完成执行此方法
        setInterval(f1,5000);//设置定时器,每5s调用一次f1方法
    });
    function f1(){
        $('#tabor').empty();//表格接收新数据前,先把表格的旧数据清空
        (此处是生成新表格的代码);
        $('#tabor').click(function(e){//整个表格绑定点击事件,并把产生的事件e作为参数
            alert($(e.target).attr('id'));//获取事件源,并取得其id的属性值,然后输出
        });
    }
</script>

jquery 事件执行两次问题

#1


楼主是刷新页面的时候吗? 

#2


在刷新的时候 点击表格
只有在刷新的时候的时候出现这种问题吗?


最好在更新table的时候,禁用到tr的click事件,更新完毕后,再启用。可能会发生冲突。也是我的猜测。

#3


写的问题吧  我写过这样的功能 ,没出现你这种情况。 代码贴出来看看

#4


timer1 = setInterval(function(){。。

//生成表格代码 

之后绑定事件,这样应该就好了

$('#tabor').on('click','tr',function() { 
  var targetID = this.id; //targetid
  alert(targetID);


。})

#5


检查下是不是每次重建表格的时候又重新绑定了一次事件.
还有在事件里调用event的stopPropagation和preventDefault方法再重新尝试一下.

#6


引用 1 楼 zhangxiaojie0321 的回复:
楼主是刷新页面的时候吗? 


不仅仅是刷新过程中,就是结束刷新了,别的事件还会执行不止一次。

#7


引用 2 楼 shnulaa 的回复:
在刷新的时候 点击表格
只有在刷新的时候的时候出现这种问题吗?


最好在更新table的时候,禁用到tr的click事件,更新完毕后,再启用。可能会发生冲突。也是我的猜测。


不止 在结束刷新之后 点击表格 也会出现。

#8


引用 4 楼 u012463264 的回复:
timer1 = setInterval(function(){。。

//生成表格代码 

之后绑定事件,这样应该就好了

$('#tabor').on('click','tr',function() { 
  var targetID = this.id; //targetid
  alert(targetID);


。})



我试试

#9


把整个表格都绑定事件了,点击表格当然是有id属性的每一行都会触发事件,所以会弹出多次,可以试下下面的代码:

<script>
    $(function(){//页面加载完成执行此方法
        setInterval(f1,5000);//设置定时器,每5s调用一次f1方法
    });
    function f1(){
        $('#tabor').empty();//表格接收新数据前,先把表格的旧数据清空
        (此处是生成新表格的代码);
        $('#tabor').click(function(e){//整个表格绑定点击事件,并把产生的事件e作为参数
            alert($(e.target).attr('id'));//获取事件源,并取得其id的属性值,然后输出
        });
    }
</script>

jquery 事件执行两次问题