2012-02-28 64 views
0

這個東西的作品,但每次我點擊我想要得到的元素,它是「點數」的點擊,然後打印相同數量的總點擊數的日誌評論。例如,如果我點擊元素連續3次(然後點擊外部以觸發聚焦),它會打印3條日誌評論,如果我再點擊2個時間(並再次在外面)打印5 log註釋。jQuery聚焦事件重複發生的問題

我想每次只點擊1 log評論當我點擊元素外。

幫助任何人嗎?

$("#main-wrapper").click(function (e) { 
    var contenteditable = $(e.target).attr('contenteditable'); 
    if (contenteditable == 'true') { 
     $(e.target).focusout(function() { 
      var content = $(this).html(); 
      console.log("get: " + content); 
     }); 
    };   
}); 

回答

2

嘗試解除綁定事件。

$("#main-wrapper").click(function (e) { 
var contenteditable = $(e.target).attr('contenteditable'); 
if (contenteditable == 'true') { 
    $(e.target).unbind('focusout').focusout(function() { 
     var content = $(this).html(); 
     console.log("get: " + content); 
    }); 
};   
}); 
+0

除非我弄錯了,否則這也會取消綁定'click'處理程序,所以這隻適用於第一次點擊。儘管如此,你應該能夠'解除綁定'('focusout')。 – 2012-02-28 12:33:43

+0

作品完美!非常感謝!!!! – user1095749 2012-02-28 12:38:28

0

每次你安裝一個新focusout事件處理您處理click。這些事件處理程序不是,而是,但添加了,並且每個事件處理程序在觸發事件時執行。這就是爲什麼您獲得與以前的點擊相同數量的記錄消息。

您應該只能指定一次focusout處理程序,但您希望如何觸發它,當然取決於您想要完成的操作。

$("#main-wrapper").focusout(function (e) { 
    var contenteditable = $(e.target).attr('contenteditable'); 
    if (contenteditable == 'true') { 
    var content = $(this).html(); 
    console.log("get: " + content); 
    }   
});