Нажмите событие, если элемент отмечен и перезагрузите страницу
Я хотел бы reload.location
событие клика, только если установлен флажок. Мне кажется, это базовые условия, но это не работает. Возможно, нужен другой подход? Я понял, что когда флажок установлен, html-изменения не изменяются. <input type="checkbox">
элемент. Может быть, в этом причина или комбинация этих условий невозможна? Оператор else - это обратный вызов на предыдущую страницу пользовательского интерфейса. В следующей попытке он пропускает оператор if.
Моя попытка:
$(document.body).on("click", "#button", function(){
if (document.getElementById('checkbox').checked) {
location.reload(true);
} else {
return_to_page( this.dataset.return )
}
});
Выше работает, однако он игнорируется из-за отсутствия ProDDault:
$(document.body).on("click", "#button", function(e){
e.preventDefault();
//etc
});
2 ответа
checked
не является свойством объекта jQuery. Ты можешь использовать prop()
чтобы получить собственность вместо:
$('#button').click( function() {
if ($('#checkbox').prop('checked')) {
location.reload(true);
}
// alternative #1 - use the 'checked' property of the Element in the jQuery object:
if ($('#checkbox')[0].checked) {
location.reload(true);
}
// alternative #2 - use the 'checked' property of the Element outside of jQuery:
if (document.getElementById('checkbox').checked) {
location.reload(true);
}
});
Вот рабочий пример:
$('#button').click(function() {
if ($('#checkbox').prop('checked')) {
// location.reload(true);
console.log('Reload would happen now...');
} else {
console.log('Staying on the current page');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
<input type="checkbox" id="checkbox" />
Reload?
</label>
<button id="button">Go</button>
$('#button').click( function() {
if( $("input[id='checkbox']:checked") ) {
location.reload(true);
}
});
альтернатива
$('#button').click( function() {
if( $('#checkbox').is(':checked') ) {
location.reload(true);
}
});
Все в одной тарелке методами:
$('#checkbox').is(":checked")
$('#checkbox').prop('checked')
$('#checkbox')[0].checked
$('#checkbox').get(0).checked