是否有任何方法可以取消绑定与one()绑定的事件?有点像unone()
答案 0 :(得分:21)
来自JQuery.com的报道:
您无法取消绑定使用创建的侦听器
.one()
。如果你想能够解开必须发生的事情 只有一次,但仍然能够在它发生之前解开它,你必须 使用.bind()
类似的东西:
$("#element").on("click",function(event){
//do stuff here
$(this).off(event);
}
答案 1 :(得分:2)
根据文档页面上的评论:
注意:您无法取消绑定使用.one()创建的侦听器。如果您希望能够取消绑定只能发生一次但仍然能够在绑定之前取消绑定的内容,请使用提供的示例在调用后解除绑定事件,并使用.bind()绑定它。
答案 2 :(得分:0)
您取消绑定任何以.one()为界的事件。
$('your_element').unbind('event_called_with_one');
$('input[type=text]').focus(function(){
$(this).one('keypress',function(){console.info('This should not print!');});
if($('input[type=checkbox]').prop('checked'))$(this).unbind('keypress');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type=text>
<label><input type=checkbox checked>unbind</label>