A-A+

解决jquery中事件重复绑定问题

2016年01月10日 前端设计 暂无评论 阅读 5 views 次

jquery事件绑定有很多的函数,但我们如果在级在同一事件上进行绑定我们可以尝试使用die()方法,在live()方法绑定前此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件,下面来看看方法。

一、$.fn.live 重复绑定

解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件。

  1. //先通过die()方法解除,再通过live()绑定  
  2. $(“#<a href="/tags.php/select/" target="_blank">select</a>All”).die().live(“click”,function(){  
  3. //事件运行代码  
  4. });  

二、click等事件

解决:使用unbind(“click”)方法先解除绑定的事件再绑定新事件,即在给对象绑定事件之前先移除该对象上的原有事件.

完整测试代码:

  1. <div class="box">  
  2.    
  3.     <button id="test">重复绑定触发按钮</button>(点击此按钮两次及以上,即可触发重复绑定,再点击下面的按钮就可看到结果)  
  4.    
  5.     <br/><br/>  
  6.    
  7.     <button id="test1">click重复绑定测试按钮</button>  
  8.    
  9.     <button id="test2">click绑定一次测试按钮</button>  
  10.    
  11.     <button id="test3">live重复绑定测试按钮</button>  
  12.    
  13.     <button id="test4">live绑定一次测试按钮</button>  
  14.    
  15. </div>  
  16.    
  17. <script type="text/<a href="/js_a/js.html" target="_blank">javascript</a>" src="../static/jquery-1.6.1.min.js"></script>  
  18.    
  19. <script type="text/javascript">  
  20.    
  21.     $(function(){  
  22.    
  23. var i = 1,j=1,k=1,h=1,n=1;  
  24.    
  25. var triggerBind = function(){  
  26.    
  27.     $("#test1").click(function() {  
  28.    
  29. alert("click未解除绑定重复绑定执行第" + j++ + "次");  
  30.    
  31.     });  
  32.    
  33.     $("#test2").unbind('click').click(function() {  
  34.    
  35. alert("click解除绑定执行" + k++ + "次");  
  36.    
  37.     });  
  38.    
  39.        
  40.    
  41.     $("#test3").live("click",function() {  
  42.    
  43. alert("live未解除绑定重复执行第" + h++ + "次");  
  44.    
  45.     });  
  46.    
  47.     $("#test4").die().live("click",function() {  
  48.    
  49. alert("live解除绑定后执行" + n++ + "次");  
  50.    
  51.     });  
  52.    
  53. }  
  54.    
  55. $("#test").click(function() {  
  56.    
  57.     triggerBind();  
  58.    
  59.     alert("触发绑定点击第" + i++ + "次");  
  60.    
  61. });  
  62.    
  63.     });  
  64.    
  65. </script>  
标签:

给我留言