点击次数过多后Jquery停止加载函数
当用户在链接上点击太多次后,我如何停止加载功能 Jquery代码如下所示:点击次数过多后Jquery停止加载函数,jquery,Jquery,当用户在链接上点击太多次后,我如何停止加载功能 Jquery代码如下所示: $(document).ready(function(){ $(".menu_rfr").click(function() { $("#main").html('<img src="img/spin.gif" class="spin">'); location.replace($(this).attr('rel')); }); $(".menu_clickable").click(function() {
$(document).ready(function(){
$(".menu_rfr").click(function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
location.replace($(this).attr('rel'));
});
$(".menu_clickable").click(function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'));
});
});
$(文档).ready(函数(){
$(“.menu_rfr”)。单击(函数(){
$(“#main”).html(“”);
location.replace($(this.attr('rel'));
});
$(“.menu\u clickable”)。单击(函数(){
$(“#main”).html(“”);
$(“#main”).load($(this.attr('rel'));
});
});
HTML:
info
信息3
编辑:
这是带有此Jquery代码的示例页面的链接。
单击按钮后禁用该按钮:
$(".menu_clickable").click(function() {
$(this).attr("disabled", "disabled");
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'), function() {
// reactivate it after some loading has completed
$(this).removeAttr("disabled");
});
});
编辑:根据您的评论进行更新。如果您的“action”元素是div,则必须解除click事件的绑定以防止重新单击产生影响,并在加载完成后重新绑定,例如:
function handleClick() {
$(this).unbind("click");
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'), function() {
// reactivate it after some loading has completed
$(this).click(handleClick);
});
}
$(".menu_clickable").click(handleClick);
函数handleClick(){
$(此)。解除绑定(“单击”);
$(“#main”).html(“”);
$(“#main”).load($(this.attr('rel'),function(){
//在某些加载完成后重新激活它
$(此)。单击(handleClick);
});
}
$(“.menu\u clickable”)。单击(handleClick);
按照karim所说的去做,但不仅要检查它是否被点击,还要检查该函数是否成功获取了数据。但是如果你的负载在每次被按下时都有新的更新,这就行不通了
另一个想法是假设在太多的快速单击中有双击,因此只需为元素上的dblclick事件返回false。如果您没有使用输入字段(禁用它们),则可以使用
.data()
跟踪请求是否正在进行,而不响应连续的单击
$(".menu_clickable").click(function() {
var menuItems = $('.menu_clickable');
if (!menuItems.data('current')) {
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'), function () {
menuItems.removeData('current');
});
menuItems.data('current', true);
};
});
$(“.menu\u clickable”)。单击(函数(){
var menuItems=$('.menu_clickable');
如果(!menuItems.data('current')){
$(“#main”).html(“”);
$(“#main”).load($(this.attr('rel')),function(){
menuItems.removeData(“当前”);
});
menuItems.data('current',true);
};
});
如果要允许多次单击(?),可以使用相同的方法,但存储计数器而不是简单的布尔值。在这种情况下,也可以非常干净地使用,如下所示:
$(".menu_clickable:not(.disabled)").live('click', function() {
$(this).addClass('disabled');
$("#main").html('<img src="img/spin.gif" class="spin">')
.load($(this).attr('rel'), function() {
$(this).removeClass('disabled');
});
});
.disabled { color: red; }
你能详细说明哪些限制吗?e、 g.在加载完成之前,他们不能单击,或者其他?即使加载未完成,他们也可以单击。这就是问题所在。我怎样才能防止这种情况发生?@Nick-据我所知,
load
确保在后续语句触发之前进行注入,但它对其他方法很重要,例如$.get
,$.post
等@karim-不,它是异步的,它仍然在调用$.ajax
并在下面使用成功
回调:但它不是按钮,而是一个DIV(display:block)@Nick-是的,我明白了,手册开头的措辞让我有点困惑:“当检测到成功响应时(即当textStatus为“success”或“notmodified”),.load()将匹配元素的HTML内容设置为返回的数据。“。我现在已经把它修好了。+1-虽然OP的新信息在这里带来了麻烦:)
$(".menu_clickable:not(.disabled)").live('click', function() {
$(this).addClass('disabled');
$("#main").html('<img src="img/spin.gif" class="spin">')
.load($(this).attr('rel'), function() {
$(this).removeClass('disabled');
});
});
.disabled { color: red; }