2

我有这个 html 元素:

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

我需要在一段时间内禁用此元素的点击操作,我这样做:

$.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
});

我不知道为什么,但这仍然有效,我可以快速单击一个一个并单击呼叫操作。有人可以帮我吗?小提琴为此

4

2 回答 2

5

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

<a>需要区别对待。您可以分配一个不执行任何操作的点击处理程序:

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

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

于 2013-02-01T15:31:49.173 回答
1

需要这样申请a

$("a").on("click," function(){ return !1; });
// or
$("a").on("mousedown" function(){ return !1; });
于 2013-02-01T16:03:52.873 回答