Is there any method to unbind an event that has been bound with one()? Sort of like unone()
According to a comment on the doc page:
Note: you cannot unbind a listener created using .one(). If you want to be able to unbind something that has to occur only once but still be able to unbind it before it occurs, use the example provided for unbinding an event after it's called, and bind it using .bind().
http://api.jquery.com/one/
You unbind whatever event that is bounded with .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>
Quote from JQuery.com:
You cannot unbind a listener created using
.one()
. If you want to be able to unbind something that has to occur only once but still be able to unbind it before it occurs, you have to use.bind()
Something like:
$("#element").on("click",function(event){
//do stuff here
$(this).off(event);
}