2012-09-07 52 views
1

我有一個wireEvents函數將javascript與表單事件綁定。例如,如何在佈線事件時添加回調函數?

$(document).on('click', '#cancelEdit', cancelEdit); 

我做這種方式,因爲#cancelEdit按鈕從jsRender模板以後添加。它工作正常。點擊按鈕時,調用cancelEdit函數。

var cancelEdit = function (event) { 
     event.preventDefault(); 
     ... 
    }; 

但是現在我想添加一個回調函數到cancelEdit這樣;

var cancelEdit = function (event, callback) { 
     event.preventDefault(); 
     ... 
    }; 

我該如何更新事件接線聲明?喜歡這個?

$(document).on('click', '#cancelEdit', cancelEdit('click', cancelEditCallBack)); 

我不能讓它工作。請幫忙。

謝謝。

回答

2

您可以通過使用數據參數傳遞額外的參數給回調。

$(document).on('click', '#cancelEdit', {cancelEditCallBack: cancelEditCallBack}, cancelEdit); 

var cancelEdit = function (event) { 
    event.preventDefault(); 
    event.data.cancelEditCallBack(); 
    ... 
}; 
2

您用函數調用交換了函數引用。你應該換回調在現在第二個定義:

$(document).on('click', '#cancelEdit', function() {cancelEdit('click', cancelEditCallBack) }); 
1

爲什麼不只是觸發您自己的自定義事件,您可以添加事件偵聽器?

var cancelEdit = function (event) { 
    event.preventDefault(); 
    $(event.currentTarget).trigger("mycustomevent") 
}; 

$(document).on("mycustomevent", "#cancelEdit", function (e) { 
    // this is your callback 
}) 
相關問題