2013-03-11 119 views
0

我有一个由第三方模块添加的按钮。当点击这个按钮时,第三个模块发送一个ajax请求(我不能改变第三方代码)。如何在ajaxStart上隐藏此按钮并在ajaxStop上显示?在ajax上隐藏点击输入

我想:

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

但它不工作的权利。

回答

0

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

var tmp = false; 

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

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

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

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

编辑

+0

我没有访问第三方HTML和JavaScript。也许尝试添加这个范围动态? – 2013-03-11 15:39:08

+0

我认为最后的问题是如何为动态添加元素添加ajaxStart? – 2013-03-11 15:46:44

+0

是否调用了ajaxStart函数? – tymeJV 2013-03-11 15:48:14

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") }); 

希望它有帮助。

+0

感谢帮助,但我试过,你的版本 - 不工作:( – 2013-03-12 09:19:04

+0

@IgorLadela你可以请检查我编辑的答案,并告诉我,如果有帮助。 – 2013-03-12 12:01:32