SolomonRei,
Интересно, зачем вы выворачиваете логику работы checkbox наизнанку?
$('#presents').on('click', function() {
alert(23);
var information = Number($('#calc-f-sum').val());
if($('#presents').prop('checked')) {
$('#presents').prop('checked', false);
if(information != ' ') {
discount = information
}
}else {
$('#presents').prop("checked", true);
if(information != ' ') {
var discount_difference = Number((information * 2)/ 100);
discount = Math.round(Number(information + discount_difference));
}
}
});
Если не в обработчике клика, то checked нормально меняется.
<label><input type="checkbox" id="presents" value="1" name="presents" checked="true" />2%</label>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$('#presents').prop('checked', false);
</script>
Корректнее использовать .attr(), но и с prop работает.