单击禁用一段时间不能使用jQuery

时间:2013-02-01 15:25:15

标签: javascript jquery click

我有这个html元素:

<div class="s_right hide_text"><a class="crackable" href="#">next</a></div>

我需要在这个元素上禁用click动作一段时间,我这样做:

$.fn.disableFor = function (time) {
    var el = this, qname = 'disqueue';
    el.queue(qname, function () {
        el.attr('disabled', 'disabled');
        setTimeout( function () {
            el.dequeue(qname);
        }, time);
    })
    .queue(qname, function () {
        el.removeAttr('disabled');
    })
    .dequeue(qname);
};

var settings_rc_right = $('.s_right a');

settings_rc_right.on('click', function(){
    $(this).disableFor(2000);
    // actions
});

我不知道为什么但这仍然有效,我可以逐个快速点击并点击通话操作。任何人都可以帮我吗? Fiddle for this

2 个答案:

答案 0 :(得分:5)

仅禁用<input><textarea><select>和其他表单小部件支持。对于其他元素,您可以添加禁用的css类。

<a>需要以不同的方式处理。您可以指定一个不执行任何操作的单击处理程序:

$("a").click(function(){ return false; });

此外,您应该使用.prop()而不是.attr()。请参阅.prop() vs .attr()

答案 1 :(得分:1)

需要像这样申请a

$("a").on("click," function(){ return !1; });
// or
$("a").on("mousedown" function(){ return !1; });