我有一个 Primefaces 命令按钮,我需要在 document.ready 上的 jQuery 中添加回调。基本上我一直在尝试做的是获取对现有函数的引用,然后在我编写的新函数中调用它:
var existingFunction = jQuery("[id~='submit']").live("click");
jQuery("[id~='submit']").live("click", function(){
existingFunction();
alert('test');
updateControlPanel(buildControlPanelUrl(getUrlVars()));
});
这对我来说似乎很简单,但由于某种原因,这不起作用。当我加载页面并单击提交按钮时,它甚至没有到达警报。
我检查了错误控制台,发现它抛出了以下错误:
((f.event.special[s.origType] || {}).handle || s.handler).apply is not a function
页面上存在我没有编写的现有 jQuery 函数,但我想确保此错误与我处理此错误的方式无关。
我正在使用带有旧版本 JQuery(1.3 或 1.4)的 tomcat 6。
谢谢,如果你们需要更多信息,请告诉我。
编辑
我已经举了一个我在 JS Fiddle 上尝试做的例子:http: //jsfiddle.net/anSXH/2/
这里有一些进一步的说明:我使用最新的 Primefaces 组件库在 JSF 2.0 (MyFaces) 中将按钮构建为一个项目。然后,我使用了该按钮并将其嵌入到现有网页中。该按钮提交表单,然后调用 JavaScript 函数以在 ajax 请求完成后在页面上显示结果。当我将按钮嵌入页面时,这一切都有效,但我现在需要在按钮调用函数后更新客户端的某些内容。这就是为什么我正在考虑向现有的 onclick 函数添加回调。
附带说明一下,因为我使用的是 Primefaces,所以我可以附加一个 JavaScript 函数以在 ajax 请求完成后运行。我的计划 B 是尝试访问此功能并以某种方式覆盖它。
编辑第 2 部分 这是从 primefaces 生成的控件:
<button
id="topsaveform:submittop"
name="topsaveform:submittop"
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
onclick="PrimeFaces.ab({source:'topsaveform:submittop',process:'topsaveform OEIMeasurementsTable',update:'errorMessages submittedPopup',onstart:function(cfg){jQuery('#loadingBar').show('fast');;},oncomplete:function(xhr,status,args){postSubmit();;}});return false;"
type="submit">
<span class="ui-button-text">Save</span>
</button>