在ajax上隐藏点击输入
我有一个由第三方模块添加的按钮。当点击这个按钮时,第三个模块发送一个ajax请求(我不能改变第三方代码)。如何在ajaxStart
上隐藏此按钮并在ajaxStop
上显示?在ajax上隐藏点击输入
我想:
$('#buttonId').click(function() {
$(this).ajaxStart(function() { $(this).hide(); }).ajaxStop(function() { $(this).show(); });
});
但它不工作的权利。
我找到简单的解决方案,感谢您的帮助:
var tmp = false;
$('.button').click(function() {
$(this).hide();
tmp = $(this);
});
$(document).ajaxStop(function() {
if (tmp) {
tmp.show();
tmp = false;
}
});
见琴:http://jsfiddle.net/4YJyk/2/
$('#buttonId').click(function() {
$(this).ajaxStart(function() { $("#buttonId").hide(); }).ajaxStop(function() { $("#buttonId").show(); });
});
编辑
的问题是这个匿名函数在功能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-12 09:19:04
@IgorLadela你可以请检查我编辑的答案,并告诉我,如果有帮助。 – 2013-03-12 12:01:32
我没有访问第三方HTML和JavaScript。也许尝试添加这个范围动态? – 2013-03-11 15:39:08
我认为最后的问题是如何为动态添加元素添加ajaxStart? – 2013-03-11 15:46:44
是否调用了ajaxStart函数? – tymeJV 2013-03-11 15:48:14