Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递参数时过早触发事件侦听器_Javascript_Jquery_Parameter Passing_Event Listener - Fatal编程技术网

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

Javascript 传递参数时过早触发事件侦听器,javascript,jquery,parameter-passing,event-listener,Javascript,Jquery,Parameter Passing,Event Listener,我将一些参数传递给javascript函数,该函数构建一个表单供用户填写。在这些参数中,还有另外两个函数包含在一个单独的类中,用于处理表单的保存或取消。cancel函数需要两个参数,用于确定要生成的实体列表。问题在于参数。在表单构建函数中,如果我将cancel函数附加到新创建的cancel按钮上,而不给它任何参数,则函数按钮工作正常,但由于缺少参数,因此会构建一个空列表。但是,如果我附加了带有参数的函数,则在创建页面时,而不是单击按钮时,函数会立即启动。我尝试过以几种不同的方式附加侦听器,包括j

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

下面是一些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); });

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

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

您应该始终在上使用
,而不要使用已弃用的
live
。您应该始终在
上使用
,而不要使用已弃用的
live