如何在接线事件时添加回调函数?

时间:2012-09-07 21:28:14

标签: jquery

我有一个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));

我不能让它发挥作用。请帮忙。

谢谢。

3 个答案:

答案 0 :(得分:2)

您使用函数调用交换了函数引用。您现在应该将回调包装在第二个定义中:

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

答案 1 :(得分:2)

您可以使用data参数将其他参数传递给回调。

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

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

答案 2 :(得分:1)

为什么不直接触发您可以添加事件监听器的自定义事件?

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

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