1

私はこのようなコードを持っています:

 <ul>  
     <li><input type="checkbox" level="child"  name="somename1" value="1" /> Child 1</li>
     <li><input type="checkbox" level="child"  name="somename2" value="2" /> Child 2 <br />
            <ul>
                <li><input type="checkbox" level="subchild" name="somename1" value="3" />Sub Child 1</li>
                <li><input type="checkbox" level="subchild" name="somename2" value="3" />Sub Child 2</li>
            </ul>
     </li>
     <li ><input type="checkbox" level="child"  name="somename3" value="3" /> Child 3</li>
 </ul>

およびjqueryコード:

$('input[@type=checkbox][level="child"]').click(function (event) {
        var checked = $(this).is(':checked');
        if (checked) {
          alert("checked");
        } else { //for click child to uncheck subchild
            alert("when unchecked");
            $(this).closest('ul > li').children('input[@type=checkbox][level="subchild"]').attr('checked', false);

        }
});

状況: child 2 + subchild1 + subchild2 がチェックされます

問題:子 2 のチェックを外すをクリックしたときに subchild1 + subchild2 のチェックを外したいのですが、上記のコードが機能しません。私はそれが何か関係があると思います:

$(this).closest('ul > li').children('input[@type=checkbox [level="subchild"]').attr('checked', false);

どんな助けでも素晴らしいでしょう。ここに JSfiddle があります: http://jsfiddle.net/p324w/

4

2 に答える 2

1

Working FIDDLE Demo

これを試して:

$('input[type=checkbox][level="child"]').on('click', function () {
    // get checked status
    var checked = $(this).is(':checked');

    // go up the dom to the parent of checkbox (li)
    $(this).closest('li')

        // find all subchild checkboxes
        .find('input[type=checkbox][level="subchild"]')

        // make them as the parent checkbox (checked or not)
        .prop('checked', checked);
});
于 2013-05-21T15:57:16.837 に答える