Вот ваша проблема.
this.checked
не определено в 'варианте 2'
.attr('checked', this.checked)
Работает, когда вы нажимаете
<input type="checkbox" name="1" id="5" value="360" class="parent" />
, потому что это флажок и он имеет cheched
атрибут.Но когда вы нажимаете
<p name="4" id="1st" class="parent">a</p>
с «этим», вы ссылаетесь на элемент <p>
, который не имеет атрибута checked
- Обновление
$(".parent").click(function() {
var $target = $(event.target);
var valueOfChecked;
if ($target.is("input:checkbox")) {
valueOfChecked = $target.attr('checked');
} else {
valueOfChecked = 'checked';
}
$(this).parents('fieldset:eq(0)').find('p > input:checkbox').attr('checked', valueOfChecked);
$(this).parents('fieldset:eq(0)').find('p > span input:checkbox').first().attr('checked', valueOfChecked);
});
Пример обновления jsfiddle