Javascript (JQuery)
$('.ic_parent').change(function(){
var id = $(this).attr('value')
while (id.length >0){
if ($(this).attr('checked')) {
$('#update_ics_table').find('input:checkbox[id = "child-of-' + id + '"]').attr('checked', $(this).attr('checked'));
}else{
$('#update_ics_table').find('input:checkbox[id = "child-of-' + id + '"]').removeAttr('checked');
}
id = $('#update_ics_table').find('input:checkbox[id = "child-of-' + id + '"]').attr('value')
}
});
У меня есть эта древовидная таблица, и я хочу установить флажок каскада.
Когда я нажимаю на корень, предполагается, что щелкают все дочерние элементы, например
root(selected)
--child1(selected)
-----subchild1(selected)
-----subchild2(selected)
-----subchild3(selected)
--child2(selected)
-----subchild1(selected)
-----subchild2(selected)
Мой текущий код не проверяет subchild1 и 2 для child2
Как бы я изменил свой код, чтобы это стало возможным?
решено:
Хорошо, надеюсь, это поможет людям, которые наткнулись на этот пост в надежде реализовать такую древовидную таблицу. Ф. Кальдеран указал на хороший код, но он делал только половину работы, как будто вы нажимаете на родителя вместо дедушки, ничего не происходит.
$('.blah).live('change',function(){
var id = $(this).attr('value')
var state = $(this).attr('checked')
var plat = $(this).attr('platform')
child_checker = $('#update_cycles_table').find('input:checkbox[key ^= "child-of-' + id + '_'+plat+'"]').attr('checked')
if (child_checker == "checked"){
$(this).removeAttr('checked')
}
while (id.length >0){
if (state){
$('#update_cycles_table').find('input:checkbox['+key+' ^= "child-of-' + id + '_'+plat+'"]').attr('checked', 'checked')
}else{
$('#update_cycles_table').find('input:checkbox['+key+' ^= "child-of-' + id + '_'+plat+'"]').removeAttr('checked');
}
id=($('#update_cycles_table').find('input:checkbox['+key+' ^= "child-of-' + id + '_'+plat+'"]').attr('value'));
}
});
вам также нужна проверка ребенка, чтобы убедиться, что при нажатии на середину дерева вершина также не проверяется. Без проверки он не распознает, что флажок не был проверен, и не будет ничего выполнять.