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));

我不能让它工作。请帮忙。

谢谢你。

4

3 回答 3

2

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

$(document).on('click', '#cancelEdit', function() {cancelEdit('click', cancelEditCallBack) });
于 2012-09-07T21:31:40.607 回答
2

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

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

var cancelEdit = function (event) {
    event.preventDefault();
    event.data.cancelEditCallBack();
    ...
};
于 2012-09-07T21:33:28.630 回答
1

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

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

$(document).on("mycustomevent", "#cancelEdit", function (e) {
    // this is your callback
})
于 2012-09-07T21:33:38.613 回答