0

我有一个由第三方模块添加的按钮。单击此按钮时,第三个模块会发送一个 ajax 请求(我无法更改第三方代码)。我怎样才能隐藏这个按钮ajaxStart并显示它ajaxStop

我试过了:

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

但它不能正常工作。

4

3 回答 3

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 回答
0

见小提琴:http: //jsfiddle.net/4YJyk/2/

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

已编辑

于 2013-03-11T15:34:55.540 回答