Ваш код выглядит очень странно, вы, кажется, проверяете значение is(':checked')
, но на самом деле это не так (без if
-статирования ??).Есть переменная checkbox_state
, которая проверена, но не установлена?И вы, похоже, проверяете, возвращает ли значение is(':checked')
строку 0
или 1
.Хотя это работает, если вы протестируете это вручную в консоли или просмотрите документацию, вы увидите, что он возвращает true
или false
, так что это может сделать ваш код намного проще.
Так что янаписал бы ваш код следующим образом:
if(checkbox_id == (queue_notification)) {
checkbox_state = $('input#user_hop_queue_notification').is(':checked');
if(checkbox_state) {
if(Notification.requestPermissionre !== "granted"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
} else {
if(Notification.requestPermission !== "denied"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
}
}
Если я правильно понял ваше намерение, это должно работать больше, чем ожидалось.Мы могли бы изменить рефакторинг переменной check_state
, так как мы больше не можем ее использовать (но сейчас я хотел бы остаться ближе к вашему исходному коду) (это могло бы все еще улучшить читаемость, так что это было бы хорошей причиной сохранить ее,однако is(:checked)
довольно понятен сам по себе).
Если вы пытаетесь установить проверенное состояние, вы должны использовать следующий код:
$('input#user_hop_queue_notification').prop('checked', true);
(если не очевидно, true "поставит галочку", false отключит).