Есть иерархический список категорий, представленный в виде ненумерованного списка UL-LI с чекбоксами. Такого вида:
<ul><br>
<li><input type="checkbox" value="1" rel="c0" id="c1" class="category"/><label for="c1">Электроника</label></li><br>
<ul><br>
<li><input type="checkbox" value="2" rel="c1" id="c2" class="category"/><label for="c2">Телефоны</label></li><br>
<ul><br>
<li><input type="checkbox" value="3" rel="c2" id="c3" class="category"/><label for="c3">Сотовые телефоны</label></li><br>
</ul><br>
</ul><br>
</ul><br>
Задача такая, что при клике на третий чекбокс (сотовые телефоны) также должны автоматом «отметиться» и верхние две категории, поскольку они являются родительскими по отношению к нажатой.
Отслеживание нажатия и нажатие родительских категорий я выполняю следующим кодом на jQuery:
$(document).ready(function() {<br>
$('.category').bind('click', function() {<br>
var category_id = $(this).val();<br>
var parent = $(this).attr('rel');<br>
<br>
if($(this).attr('checked')) {<br>
window.categories.push = category_id;<br>
}<br>
<br>
if(parent != 'c0') $('#'+parent).click();<br>
}); <br>
})<br>
Код работает прекрасно в том смысле, что он действительно ставит галочки и на родительских категориях. Но проблема в том, что при программном вызове события
click() код
$(this).attr('checked')
почему-то возвращает
false, тогда как отметка на самом деле производится; и наоборот, возвращает
true, тогда как отметка на самом деле снимается.
Отчего так?