0

サードパートモジュールによって追加されたボタンがあります。このボタンをクリックすると、3番目のモジュールがajaxリクエストを送信します(サードパーティのコードを変更することはできません)。ajaxStartこのボタンを非表示にして表示するにはどうすればよいajaxStopですか?

私は試した:

$('#buttonId').click(function() {
    $(this).ajaxStart(function() { $(this).hide(); }).ajaxStop(function() { $(this).show(); });
});

しかし、それは正しく機能しません。

4

3 に答える 3

0

フィドルを参照してください:http://jsfiddle.net/4YJyk/2/

$('#buttonId').click(function() {
    $(this).ajaxStart(function() { $("#buttonId").hide(); }).ajaxStop(function() { $("#buttonId").show(); });
});

編集済み

于 2013-03-11T15:34:55.540 に答える
0

this問題は、クリックイベントではなく関数に関連する関数で匿名関数にこれを使用することです。したがって、このアプローチを使用できます。

$('#buttonId').click(function() {
    var button = $(this);
    button.ajaxStart(function() { button.hide(); }).ajaxStop(function() { button.show(); });
});

編集:あなたのコメントの後、ajaxStart私はそれがあなたのプラグインだと思ったのですが、それはグローバルイベントなので、その男をボタンにアタッチすることはできません。ドキュメントにアタッチすることしかできず、AJAXリクエストが開始または終了すると、関連するイベントがトリガーされます。こちらをご覧ください。 http://api.jquery.com/ajaxStart/そのイベントをオブジェクトにアタッチすると、これを使用してアクセスできますが、イベントがトリガーされることはありません。だからあなたはこのようなことをすることができます。

$(document).ajaxStart(function() {
  $( "#buttonId" ).hide();
});

$(document).ajaxStop(function() {
  $( "#buttonId" ).show();
});

このイベントをトリガーするには、次のようなAJAXリクエストを行う必要があります。

$( "#buttonId" ).click(function () { $("#divId").load("DivContent.aspx") });

それが役に立てば幸い。

于 2013-03-11T16:00:03.590 に答える
0

私は簡単な解決策を見つけました、助けてくれてありがとう:

var tmp = false;

$('.button').click(function() {
    $(this).hide();
    tmp = $(this);
});

$(document).ajaxStop(function() {
    if (tmp) {
         tmp.show();
         tmp = false;
    }
});
于 2013-03-12T12:28:45.320 に答える