Chaim
Chaim

Reputation: 2149

Jquery unbind events bound with one()

Is there any method to unbind an event that has been bound with one()? Sort of like unone()

Upvotes: 13

Views: 5069

Answers (3)

xam
xam

Reputation: 452

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>

Upvotes: 0

Eduard Luca
Eduard Luca

Reputation: 6602

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

Upvotes: 21

Clive
Clive

Reputation: 36956

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/

Upvotes: 2

Related Questions