2

我有类似的东西:

<button id="button" onclick="alert('Hi')">a button</button>


我想停用按钮 onclick 操作,假设页面加载后 5 秒。
注意:我不想禁用该按钮,只是希望它的 onclick 操作在 5 秒后才起作用。

4

5 回答 5

4

超时 5 秒后使用 jQuery 绑定事件。

setTimeout(function(){
    $('#button').click(function(){
        alert('Hi');
    });
}, 5000);
于 2012-05-04T16:26:01.330 回答
4

您可以简单地删除该onclick属性,然后在 5 秒后将其放回。

var onClickFunc = $('#button').prop('onclick');
$('#button').removeProp('onclick');
setTimeout(function(){
    $('#button').click(onClickFunc);
}, 5000);

演示:http: //jsfiddle.net/KX5g7/1/

于 2012-05-04T16:26:12.493 回答
1
$(function(){
    $('#button').attr('savedclick', $('#button').attr('onclick')).removeAttr('onclick');  
    setTimeout(enableButton, 5000);    
});

function enableButton(){
    $('#button').attr('onclick', $('#button').attr('savedclick')).removeAttr('savedclick');
}

​<a href="http://jsfiddle.net/Yupt9/1/" rel="nofollow noreferrer">演示

于 2012-05-04T16:26:13.730 回答
1
$(function(){
        $('#button').unbind('click');
        setTimeout(function(){
            $('#button').bind('click');
        }, 5000);
    });​

编辑:

这似乎并没有像Rocket所说的那样取消绑定事件,所以,我认为一个好的解决方案可能是删除触发事件的属性:

$(function(){
    $('#button').attr('onclick', '');
    setTimeout(function(){
        $('#button').attr('onclick', 'alert("Hi")');
    }, 5000);
});​
于 2012-05-04T16:27:13.680 回答
0

为此,请不要放入onclick内联。

在您的$(document).ready(...)函数中,使用setTimeout等待 5 秒的回调函数来设置 onclick ( $('#button').click(function(btn) { alert('Hi'); });)

于 2012-05-04T16:27:37.190 回答