document.ready の jQuery でコールバックを追加する必要がある Primefaces コマンド ボタンがあります。基本的に私がやろうとしてきたことは、既存の関数への参照を取得し、それを私が書いた新しい関数で呼び出すことです:
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) のプロジェクトとして作成しました。次に、そのボタンを既存の Web ページに埋め込みました。ボタンはフォームを送信し、JavaScript 関数を呼び出して、ajax リクエストが完了した後にページに結果を表示します。ボタンをページに埋め込むと、これはすべて機能しますが、ボタンが関数を呼び出した後、クライアント側で何かを更新する必要があります。そのため、既存の onclick 関数にコールバックを追加することを検討しています。
ちなみに、私は Primefaces を使用しているため、ajax リクエストの完了後に実行する JavaScript 関数をアタッチできます。私の計画 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>