#javascript #jquery #html #css #jquery-ui
#javascript #jquery #HTML #css #jquery-пользовательский интерфейс
Вопрос:
Вот мой HTML-код:
<input class="menu-btn" type="checkbox" id="menu-btn" />
Вот мой код javascript:
$(document).ready(function() {
$(document).click(function(event) { //line 1
if(!$(event.target).closest('#menu').length) { //line 2
if($('.menu-btn').is(':checked')) { //line 3
$('#menu-btn').trigger('click'); //line 4
}
}
})
})
Строка 1 работает, строка 2 работает, строка 3 не работает, и это также не позволяет мне установить флажок. почему это?
Редактировать: вот что я пытаюсь сделать:
строка 1 предназначена для определения наличия щелчка. строка 2 предназначена для определения, находится ли щелчок за пределами #menu, а строка 3 предназначена для проверки, снят ли флажок menu-btn. если флажок снят, то строка 4 вызовет щелчок меню-btn. проблема в том, что строка 3 не позволяет мне установить флажок, если он в данный момент не установлен.
Комментарии:
1. Сколько
.menu-btn
у вас s?2. @AdamAzad У меня только один
Ответ №1:
вы можете использовать prop, чтобы установить флажок вместо того, чтобы запускать событие щелчка по нему, $('#menu-btn').prop('checked', 'checked');
и снять его с помощью $('#menu-btn').prop('checked', false);
Переключение кода:
$(document).ready(function() {
$(document).click(function(event) { //line 1
if(!$(event.target).closest('#menu').length) { //line 2
if(!$('#menu-btn').prop('checked')) { //line 3
$('#menu-btn').prop('checked', 'checked'); //line 4
} else {
$('#menu-btn').prop('checked', false);
}
}
})
})
Комментарии:
1. Да. если установлен флажок menu-btn, выполните console.log(«test»);. но это не позволяет мне это проверить
2. Измените .menu-btn на #menu-btn и проверьте обновленный ответ
3. Вы неправильно используете оператор.
is(':checked')
возвращает true, если флажок установлен, и false в противном случае. Перед ним должен быть!
оператор
Ответ №2:
Попробуйте этот код переключения:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(window).click(function() {
$('#menu-btn').trigger('click');
});
});
</script>
<input class="menu-btn" type="checkbox" id="menu-btn" />
Комментарии:
1. это просто удалило мою функцию line 3. мне нужна строка 3, но мне нужно, чтобы она работала.