我有第三部分模块添加的按钮。单击此按钮时,第三个模块发送ajax请求(我无法更改第三方代码)。如何在ajaxStart
上隐藏此按钮并在ajaxStop
上显示?
我试过了:
$('#buttonId').click(function() {
$(this).ajaxStart(function() { $(this).hide(); }).ajaxStop(function() { $(this).show(); });
});
但它不能正常工作。
答案 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;
}
});