点击次数过多后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() {

当用户在链接上点击太多次后,我如何停止加载功能

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() {
$("#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; }