如何在使用一种方法后重新点击事件?
$("#file").one("click", function(event)
{
// code works only one time as expected.
$(this).bind("click") // attempting to rebind it again after executing code but not binding again tested below.
});
在单击上面的一个方法之前,click事件附加到元素#file但是在单击一个方法后,它使用下面的代码显示click事件是unbind
$(".viewAttachedEvents").click(function()
{
var eventFile = $._data(document.getElementById("file"),"events");
var File = JSON.stringify(eventFile);
alert("eventFile: "+File+");
});
答案 0 :(得分:0)
我刚测试了这个并且看起来很有效,虽然看起来很不优雅。
$("#file").one("click", function(event)
{
setTimeout(function(){
jQuery('#file').click(function(){console.log('bound again')});
},2000);
});
编辑:
这似乎也有效 - 我相信有一种更清洁的方式:
$("#file").one("click", function(){
//do something
rebindMe.call($(this));
});
var rebindMe = function(){
setTimeout(function(){
$(this).one('click', function(){
//do something
rebindMe($(this));
});
},4000); // set to 4 seconds. can change it.
}
答案 1 :(得分:0)
这对我来说似乎有点多余,只需要点击一下就可以使用.one
方法。在事件运行完代码后重新绑定click事件,只需使用.on
和.off
进行一点抽象,就会更加轻松。
var bindTo = $(document),
clickEvent = function(event)
{
// Unbind event
bindTo.off('click', '#file', clickEvent);
// Run your event logic
// Rebind the event
bindTo.on('click', '#file', clickEvent);
};
bindTo.on('click', '#file', clickEvent);