0

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

2 回答 2

0

您是否尝试过制作原始功能dieref)?

jQuery("[id~='submit']").die("click");
jQuery("[id~='submit']").live("click", function(){
    alert('test');
    updateControlPanel(buildControlPanelUrl(getUrlVars()));
});
于 2012-06-10T18:21:21.077 回答
0

问题是我试图用一个 primefaces 按钮来做到这一点。当我切换到标准 JSF 按钮时,我能够将功能附加到它上面没有问题。

于 2012-06-11T20:32:30.180 回答