jquery中click事件重复绑定问题

在最近的项目中遇到这样一个问题:

从心愿单中删除产品,1.如果直接确定删除,则删除成功,2.如果先取消删除,再次点击再确认删除,则会出现问题,测试发现:

对未来元素(类名为deleteFav的对象)绑定click事件中,如果function中还包含有元素(简称A)的click事件,在点击两次删除按钮时会出现A 元素的click事件重复绑定的情况

$("body").on("click",".deleteFav",function(){//点击删除button
  var id=$(this).attr("id");
  $(".alertBtns").append("<span class=‘cancel‘ style=‘margin-left:14px;‘>CANCEL</span>");
  $(".alertwindow .tips").html("Are you sure you want to remove this Photo from the favorites? ");
  $(".alertwindow").show();
  $(".alertBtns .conf").click(function(event){

    //alert("test");   //------第二次点击.deleteFav 会发现弹出两次test
    location.href=rootDomain +‘/wishlists/delete/‘+id;
  });

});

解决方法,先解绑,再绑定

$("body").on("click",".deleteFav",function(){//点击删除button
  var id=$(this).attr("id");
  $(".alertBtns").append("<span class=‘cancel‘ style=‘margin-left:14px;‘>CANCEL</span>");
  $(".alertwindow .tips").html("Are you sure you want to remove this Photo from the favorites? ");
  $(".alertwindow").show();
  $(".alertBtns .conf").unbind("click").click(function(event){
    location.href=rootDomain +‘/wishlists/delete/‘+id;
  });

});

时间: 2024-07-30 13:40:25

jquery中click事件重复绑定问题的相关文章

Jquery中click事件重复执行的问题

$('#xxx').unbind('click').click(function () { ... }); 每次绑定前先取消上次的绑定. 1.一种方法是弹窗隐藏的时候把弹窗销毁掉:2.一种是把弹窗里面的事件绑定抽离出来,不要让弹窗每次显示的时候都执行click的绑定.当然楼主的解决方案也不错.

jQuery中click事件多次触发解决方案

jQuery 中元素的click事件中绑定其他元素的click事件. 因为jQuery中的click事件会累计绑定,导致事件注册越来越多. 解决方案: 1.能够避开,避免把click事件绑定到其他元素的例如click,hover等事件中. 2.不能避开,使用unbind("click"),然后再bind("click").

jquery中事件重复绑定以及解绑问题

一般的情况下,对于这种情况,我们常规的思路是,先解绑,再绑定,如下: $(selector).unbind('click').bind('click',function(){....}); 当这样会有一个问题,unbind会把其之前的所有的click事件都unbind掉,可能会影响其他的绑定,有如下有两种方法解决: 第一种: 使用事件命令空间,来唯一标识这个click的绑定,这样在解绑是不会将其他click绑定的事件也给解绑. $(selector).unbind('click.selector

Jquery中的事件绑定$(&quot;#btn&quot;).bind(&quot;click&quot;,function(){ })

Jquery中的事件绑定:$("#btn").bind("click",function(){  }) 因为每次都这么调用太麻烦,所以jquery就用$("#btn").click(function(){})来进行简化 Jquery中的事件绑定$("#btn").bind("click",function(){ })

jquery事件重复绑定解决办法

jquery事件重复绑定解决办法 一$.fn.live 重复绑定 解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件. //先通过die()方法解除,再通过live()绑定$(“#selectAll”).die().live(“click”,function(){//事件运行代码}); 二click等事件 解决:使用unbind("click")方法先解除绑定的事件再绑定新事件,即在给对象绑定事件之前先移除该

解决jQuery中dbclick事件触发两次click事件

首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbclick可以触发两次click事件.例如一个DOM元素div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情.事件处理上没有冲突,都可以各自完成各自的操作.双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了click 事件,那么,如何来

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

解决jquery绑定事件重复绑定问题,以下用绑定click事件为例: 出现重复绑定情况: $(dom).click(function(e){})或者$(dom).on('click', function(e){}) 不管是click还是on都是会在原来方法上重复添加,所以我们需要如下做就可以解决 $(dom).unbind('click').click(function(e){}) 在绑定新click方法前对元素所绑定的click方法解绑

父节点和子节点事件重复绑定(如click)

以click事件为例,当父节点或子节点绑定了click事件后,点击该节点,事件会发生冒泡传递,即会造成事件重复绑定,这时候需要阻止事件的冒泡,采用stopPropagation 或cancelBubble等. stopPropagation() 方法 定义和用法 不再派发事件. 终止事件在传播过程的捕获.目标处理或起泡阶段进一步传播.调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点. 语法 event.stopPropagation() 说明 该方法将停止事件的传播,

在MVVM模式中,按钮Click事件的绑定方法

原文:在MVVM模式中,按钮Click事件的绑定方法 在MVVM模式中,我们将Button的方法写到ViewModel中,然后绑定到前端界面.通常的做法是写一个类,继承ICommand接口,然而如果按钮比较多的话,就需要写很多的类,对于后期维护造成很大的不变,微软提供了一个DelegateCommand类,可以简化开发. 使用方法如下: 首先生命ViewModel属性,GetMsg函数, public DelegateCommand GetMsg { get { return new Deleg