Вы можете использовать off()
, чтобы удалить привязку, как только это произойдет. Если бы вы связывали только одно событие, вы могли бы просто использовать one()
, но, поскольку вы связываете несколько событий, в этом случае оно все равно будет связано с другим событием. Поэтому вы должны явно удалить его из обоих, когда это произойдет.
function myMethod(){
console.log('This should happen only once');
$('#target').off('blur change', myMethod);
}
$('#target').on('blur change', myMethod);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="target" value="">
При желании вы также можете использовать делегата для обработки этого.
$(document.body).on('blur change', '#target:not(.ignore)', function(e){
console.log('This should happen only once');
$(e.target).addClass('ignore');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="target" value="">