我嘗試使用事件委託向DOM添加項目,該項目可以使用單擊事件,它可以工作,但它會在第二次點擊時觸發兩次事件。委派單擊事件會導致事件觸發兩次
控制檯輸出:
25-06-2015
Object {option: "2", date: "25-06-2015", callback: "dialog"}
26-06-2015
Object {option: "2", date: "25-06-2015", callback: "dialog"}
Object {option: "2", date: "26-06-2015", callback: "dialog"}
代碼:
$(document).on("click", ".action", function(e){
var target = $(this).data("target");
console.log(target);
var dialog = $('#dialog');
dialog.find(".form-errors").html('');
dialog.show();
dialog.find('form').submit(function(e){
e.preventDefault();
var params = {
'option': $(this).find('#option').val(),
'target': target,
'callback': 'dialog'
};
console.log(params);
// call backend
API(action, params)
});
});
我想加入這一行,但它並沒有解決我的問題
$(document).on("click", ".action", function(e){
e.stopImmediatePropagation();
...
NE W輸出(密切關注,它會將舊兩次日期):
25-06-2015
Object {option: "2", date: "25-06-2015", callback: "dialog"}
26-06-2015
Object {option: "2", date: "25-06-2015", callback: "dialog"}
用'dialog.find( '形式')嘗試過( '提交')提交(函數(E){'。 – Satpal
因此,每次點擊'.action',你就會綁定到表單提交?當然,你只需要這樣做一次 – CodingIntrigue