我有一个按钮和2个链接,这是一个ajax请求。如果通过按钮调用的请求已经完成,我希望显示警告。但是如果我点击某个链接,我就不想显示警报了。这是我的密码:
HTML:
<button id="ajax">Ajax</button>
<a href="#">link 1</a>
<a href="#">link 2</a>
<div></div>联署材料:
$('#ajax').click(function() {
$("div").load("/echo/js/?js=button");
$( document ).ajaxStop(function() {
alert('alert')
});
})
$('a').click(function() {
$("div").load("/echo/js/?js=link");
})为什么我点击按钮,然后点击一些链接,它会显示警报?在第一次单击按钮后,它只显示一次警报。但是如果我第二次点击这个按钮,它会显示两次警报。我怎么才能解决呢?
发布于 2015-10-07 22:27:13
1.执行警报
您应该使用jquery的回调函数来执行警报:
$('#ajax').click(function() {
$("div").load("/echo/js/?js=button", function() {
alert('alert');
});
});
$('a').click(function() {
$("div").load("/echo/js/?js=link");
});回调函数 如果提供了“完整”回调,则在执行后处理和HTML插入之后执行该回调。对jQuery集合中的每个元素触发一次回调,然后依次将回调设置为每个DOM元素。
来自jquery和有关load():http://api.jquery.com/load/的更多信息
下面是为您的案例更新的小提琴:http://jsfiddle.net/55rpfe0w/
2. ajaxStop处理程序
你的密码..。
$( document ).ajaxStop(function() {
alert('alert')
});在使用链接处理...the请求时也会调用ajax事件处理程序。
每当Ajax请求完成时,jQuery都会检查是否还有其他未决的Ajax请求。如果没有保留,jQuery将触发ajaxStop事件。
来自jquery:https://api.jquery.com/ajaxStop/
3.多时间警报
在第一次单击按钮后,它只显示一次警报。但是如果我第二次点击这个按钮,它会显示两次警报。我怎么才能解决呢?
原因是,您在click函数中设置了事件ajaxStop的处理程序,每次单击按钮,就会设置另一个事件处理程序,因此:
此时将执行已在.ajaxStop()方法中注册的任何和所有处理程序。
来自jquery:https://api.jquery.com/ajaxStop/
发布于 2015-10-07 22:24:42
如果不希望运行任何函数,则不必传递任何内容,就像在$('a').click函数中所做的那样。
http://jsfiddle.net/rgyxzwj6/1/
$('#ajax').click(function() {
$("div").load("/echo/js/?js=button", function() {
alert('alert');
});
})
$('a').click(function() {
$("div").load("/echo/js/?js=link");
})https://stackoverflow.com/questions/33003365
复制相似问题