1

私は現在、ajax呼び出しを発生させるクリックイベントを処理しています。フォームデータの検証を処理する小さなプラグインを活用したいと思います。問題は、プラグインのajax呼び出しと検証関数の両方が同じクリックイベントで起動されることです。

最後に、プラグインでajax関数をオーバーライドしたいと思います。どうすればいいのかよくわかりません。助言がありますか?プラグイン全体を投稿することはできませんが、ここに簡単なサンプルがあります。

ここでAjaxCallが起動されました:

$('p.thisClass').live('click',function() {
    //Ajax Fires here
});

ここにプラグインスニペット:

config.button.live('click', function() {
    someFunction();
    // Stop Other click event from firing
});

これを確認する方法はいくつかありますが、最終的には、プラグインがajaxを起動するクリックよりも優先されるようにします。これを達成する方法について何か考えはありますか?

ありがとう

4

3 に答える 3

0

イベントをキャンセルするには、jquery を実行するだけです

return false;

最初にアタッチするイベント ハンドラーを確認するだけです。

ただし、はるかに優れた解決策は、送信時ではなく変更時に検証することです。そうすることで、ユーザーがバグを修正するのがはるかに速くなり、煩わしくなくなります。

于 2010-02-10T19:24:24.553 に答える
0

バインド機能を制御できますか? その場合は、jQuery の unbind または die メソッドを参照してください: Unbind Die

これを使用すると、元の ajax クリック イベントを変数に割り当ててから、その変数だけをアンバインド/ダイすることができます。

例: 以前にバインドされたハンドラーを 1 つだけバインド解除するには、関数を 2 番目の引数として渡します。

     var foo = function () {
     // code to handle some kind of event
     };

     $("p").bind("click", foo); // ... now foo will be called when paragraphs
 are clicked ...

     $("p").unbind("click", foo); // ... foo will no longer be called.
于 2010-02-10T22:56:01.947 に答える
0

最初のクリック後にボタンを無効にすることを検討しましたか?

複数提出の問題を解決するように思えます。

于 2012-05-21T18:42:05.180 に答える