1. 程式人生 > >click事件的累加繫結,一次點選,執行多次

click事件的累加繫結,一次點選,執行多次

最近在工作上遇到一個點選事件累加的問題,為元素新增點選事件效果,但是總是效果失敗,最後發現點選事件被執行了多次,上網查了一下,下邊就是解決這個問題的幾種思路

 $("#adsCollection_tb .contentDel").on("click",function(){
    $(this).each(function(){
    var obj_address_name = $(this).parent().parent().find(".obj_address_name").html();
    var jsonDel = {
            "head"
: {   "module": "object",    "function": "del_obj" }, "body":[ {    "name": obj_address_name } ] } alert("確定要刪除這一條嗎?"); addrGroup.Ajax(jsonDel);    }
); });

在頁面中為一個元素繫結事件,事件執行後頁面未重新整理且元素還在,然後你再次點選,元素又被繫結個一次點選事件,這樣第二次點選就會執行兩次,以此類推。如何解決累加繫結?

第一種方法

元素點選後刪除,然後再動態建立一個元素,再新增點選事件。顯然這個方式很麻煩。

第二種方法

使用jquery的one()方法,為元素繫結一個一次性的事件處理函式,這個事件處理函式只會被執行一次。

$("#adsCollection_tb").one("click",function(){
    alert("執行"); 
})

第三種方法

在每次繫結點選事件前先解除之前的事件繫結,再為元素繫結事件,類似於先清空,在做操作一樣。但你使用bind()方法繫結時,可以用unbind()方法解除繫結。通常我們跟願意用on()方法繫結事件,因為bind()方法已經不被推薦,那麼那麼就用off()方法解除事件繫結。

$("#adsCollection_tb").unbind("click").bind("click",function(){
   alert("執行"); 
});
$("#adsCollection_tb").off("click").on("click",function(){
   alert("執行"); 
})

本人通過這些方法解決了這個問題,希望可以幫到遇到同樣問題的人

https://github.com/zhangqian00/

這是我的github地址,有一些我自己寫的一些關於require、angular、vue等等的小專案,最近在學習Nodejs,非常歡迎大牛們來指點,交流,分享。

前端很忙
微信搜尋公眾號:前端很忙

獲取更多幹活分享,歡迎來搞!