У меня есть флажок, если он установлен, будет отмечен другой флажок. Я использую материальный дизайн. Установленное свойство флажка блока материала не определено. Как сделать проверенное свойство определенным? Что я делаю неправильно?
Это ссылка, по которой возникает проблема
<script>
$(document).ready(function(){
$("#exclude_all").change(function(){
var element_all = document.querySelectorAll('[id = "exclude_all"]');
var elements = document.querySelectorAll('[id^ = "exclude_dir_"]');
for(var i=0, n=elements.length; i<n; i++){
var element = elements[i];
if ($('#exclude_all').is(":checked")) {
element.MaterialCheckbox.check();
} else {
element.MaterialCheckbox.uncheck();
}
}
});
});
</script><!DOCTYPE html>
<html>
<head>
<link rel = "stylesheet" href = "https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel = "stylesheet" href = "https://code.getmdl.io/1.3.0/material.grey-light_blue.min.css">
<script defer src = "https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<ol style = "padding-left:37px;list-style:none;font-size:12px;">
<li>
<label id = "label_exclude_all" name = "label_exclude_all" class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for = "exclude_all" style = "margin-left:3px;padding-left:31px;">
<input type = "checkbox" name = "exclude_all" id = "exclude_all" class = "mdl-checkbox__input" value = "Buscar""">
<span class = "mdl-checkbox__label" style = "font-size:12px;color:#757575;">Excluir tudo</span>
</label>
</li>
<li>
<label name = "label_exclude_dir_0" id = "label_exclude_dir_0" class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for = "exclude_dir_0" style = "margin-left:3px;padding-left:31px;">
<input type = "checkbox" name = "exclude_dir_0" id = "exclude_dir_0" class = "mdl-checkbox__input" value = "Atibaia">
<span class = "mdl-checkbox__label" style = "font-size:12px;color:#757575;">Atibaia</span>
</label>
</li>
</ol>
</body>
</html>


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Когда я изменяю это:
element.MaterialCheckbox.check();
К этому:
element.parentNode.MaterialCheckbox.check();
Я думаю, вам нужно сделать метку, а не флажок ввода.
Во всех инструкциях по материальному дизайну Lite, которые я читал, никогда не упоминается, что вам нужно использовать parentNode. Кто-нибудь может объяснить, почему?
Маркос
Документация для Material Design Lite API, казалось, так и не была полностью завершена, прежде чем они поместили ее в «ограниченную поддержку» и перешли к Компоненты материалов для Интернета. Вы можете просеять исходный код для флажка MDL, чтобы увидеть, что элемент метки является неотъемлемой частью дисплея и что для этого элемента необходимо вызывать функции флажка MDL.
Ниже приведен рабочий фрагмент, который нацелен на нужные вам элементы без дополнительных действий:
$(document).ready(function() {
// better to add a class to your checkbox labels and update this selector
const elems = $('[id^=label_exclude_dir_]');
$('#exclude_all').change(function() {
let checked = $(this).is(':checked');
elems.each(function() {
if (checked) {
this.MaterialCheckbox.check();
} else {
this.MaterialCheckbox.uncheck();
}
});
});
});<!DOCTYPE html>
<html>
<head>
<link rel = "stylesheet" href = "https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel = "stylesheet" href = "https://code.getmdl.io/1.3.0/material.grey-light_blue.min.css">
<script defer src = "https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<ol style = "padding-left:37px;list-style:none;font-size:12px;">
<li>
<label id = "label_exclude_all" name = "label_exclude_all" class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for = "exclude_all" style = "margin-left:3px;padding-left:31px;">
<input type = "checkbox" name = "exclude_all" id = "exclude_all" class = "mdl-checkbox__input" value = "Buscar">
<span class = "mdl-checkbox__label" style = "font-size:12px;color:#757575;">Excluir tudo</span>
</label>
</li>
<li>
<label name = "label_exclude_dir_0" id = "label_exclude_dir_0" class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for = "exclude_dir_0" style = "margin-left:3px;padding-left:31px;">
<input type = "checkbox" name = "exclude_dir_0" id = "exclude_dir_0" class = "mdl-checkbox__input" value = "Atibaia">
<span class = "mdl-checkbox__label" style = "font-size:12px;color:#757575;">Atibaia</span>
</label>
</li>
</ol>
</body>
</html>Я хочу, чтобы по умолчанию отмечен (отмечен) тот же элемент в документе, готовом. тогда он не работает $ ("# lblchk-Active") [0] .MaterialCheckbox.check (); Затем я использую $ ("# Active"). Attr ("проверено", "проверено"); все еще не работает
@ Pratik1020 - не видя вашего html, я бы просто догадывался, что происходит. Почему бы не опубликовать вопрос с фрагментом, демонстрирующим вашу проблему?
Это HTML-код Meterial CheckBox Как проверить и снять проверку с помощью JQuery.
<div class = "col-lg-2 col-md-2 col-sm-2 col-xs-12">
<label class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for = "OnAccount">
<input type = "checkbox" id = "OnAccount" class = "mdl-checkbox__input" />
<label class = "mdl-checkbox__label">On Account</label>
</label>
</div>
Спасибо! Я использовал ваше предложение на своем веб-сайте, и оно сработало.