隐藏ajax上的点击输入

时间:2013-03-11 15:27:16

标签: jquery ajax

我有第三部分模块添加的按钮。单击此按钮时,第三个模块发送ajax请求(我无法更改第三方代码)。如何在ajaxStart上隐藏此按钮并在ajaxStop上显示?

我试过了:

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

但它不能正常工作。

3 个答案:

答案 0 :(得分:0)

请参阅小提琴:http://jsfiddle.net/4YJyk/2/

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

被修改

答案 1 :(得分:0)

问题是在函数this中的匿名函数使用这个函数而不是click事件,所以你可以使用这种方法,

$('#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") });

希望它有所帮助。

答案 2 :(得分:0)

我找到了简单的解决方案,感谢您的帮助:

var tmp = false;

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

$(document).ajaxStop(function() {
    if (tmp) {
         tmp.show();
         tmp = false;
    }
});