传递参数时,事件侦听器过早触发

我将一些参数传递给javascript函数,该函数构建一个供用户填写的表单。这些参数中包含另外两个函数,这些函数包含在一个单独的类中,用于处理表单的保存或取消。 cancel函数需要两个参数,用于确定要构建的实体列表。 问题在于参数。 在表单构建function中,如果我将取消function附加到新创建的取消按钮而不给它任何参数,则function按钮工作正常但由于缺少参数而构建空列表。 但是,如果我使用参数附加函数,则在创建页面时,函数会立即触发,而不是在单击按钮时触发。 我尝试以几种不同的方式附加监听器,包括javascript,jquery甚至yahoo.util。 在其他实例中使用参数调用时,取消函数中的所有内容都能正常工作。 关于为什么函数在参数传递时会提前触发的想法?

这里有一些不同方式的sudo代码,我已经连接了偶数监听器。

function buildform(formData, saveFunction, CancelFunction, p1, p2){ $("#cancelButton").live("click", cancelFunction(p1, p2); YAHOO.util.Event.on("cancelButton", "click", cancelFuntion(p1, p2)); cancelButton.setAttribute("onClick",cancelFunction(p1, p2); } 

您必须在函数块中包装方法调用,否则将立即对它们进行求值:

 $("#cancelButton").live("click", function () { cancelFunction(p1, p2); });