1

ボタンにjQueryイベントを追加する方法を探していました。ボタンをクリックすると、イベントが発生し、続いてaspポストバックが発生します。

イベントを追加するのは簡単ですが、asp ポストバックを一時的に遅らせるという問題があります。

Asp コード (C# で追加されたイベント):

<input runat="server" ClientIDMode="static "id="cancelButton">

JQuery コード:

var cancelBtn = jQuery('#cancelButton');

cancelBtn.click(function (e) {
    e.preventDefault();

    var cancelBtnEvent = cancelBtn[0].click;

    jQuery(pnl).animate({
        height: 200
    }, 300, 'swing', function () {
        cancelBtnEvent();
    });
}); 

上記のコードでは、ボタンにクリック イベントを追加しています。「cancelBtn」は入力 [type="button"] です。イベントはデフォルトを停止し、後で呼び出すためにクリック関数を保存し、アニメーションを実行してからクリック関数を呼び出します。ただし、これは無効なオブジェクト呼び出しのエラーで失敗します。

だから私の質問:

これはどのように行うべきですか?または解決策を修正できますか?

ありがとう

4

3 に答える 3

1

編集1

これはあなたのために働く簡単なトリックです。申し訳ありませんが、以前は質問に気付きませんでした。

var IsFirstLoad = true;// Declare globally (outside ready function)
        cancelBtn.click(function (e) {
            if (IsFirstLoad) {
                e.preventDefault();
            }
            jQuery(pnl).animate({
                height: 200
            }, 300, 'swing', function () {
                jQuery('#cancelButton').click();
                IsFirstLoad=false;
            });
        });

回答が最初に投稿されました (このシーンでは機能しません)。ごめん!

jQuery(pnl).animate({
        height: 200
    }, 300, 'swing', function () {
        jQuery(cancelBtn).click();
    });

jQuery(cancelBtn).click();の代わりに使ってみてくださいcancelBtnEvent();。jQuery 要素の場合cancelBtnは、単純cancelBtn.click()に十分です。

于 2013-09-05T08:49:13.410 に答える
0

これも可能です:

jQuery(cancelBtn).trigger("click");
于 2013-09-05T08:51:54.513 に答える
0

まず、セレクターcancelBtnが正しいことを確認しますか? ASP.net は asp 要素 ID を変更するため、これ以上それらに対処することはできません$("MyElementId")。代わりに、たとえばを使用する必要があります$("[ID$=MyElementId]")。では、オブジェクトとはどのようなものcancelBtnでしょうか?

クリックイベントを変数に保存するのはなぜですか? 代わりに、直接呼び出すことができます:

jQuery(pnl).animate({
    height: 200
}, 300, 'swing', function () {
    jQuery(cancelBtn).click();
});

を使用して DOM 要素を取得する必要はないことに注意してくださいcancelBtn[0]

于 2013-09-05T08:49:22.893 に答える