페이지로드시 모든 하위 항목이 선택 될 때 상위 항목이 선택되지 않음

요한 블레이크

나는이 질문이 이미 그렇게 된 것을 알고 있습니다. 하지만 제 경우에는 HTML 구조 때문에 다릅니다. 그래서 순서없는 목록이 있습니다. 모든 하위 항목을 확인할 때 상위 항목을 확인하고 싶습니다. 내가 지금 가지고있는 것에서, 아이들이 모두 확인되지 않고 마지막 아이를 확인하면 부모가 확인됩니다. 괜찮아. 그러나 모든 하위 항목이 선택되면 페이지로드시 상위 항목이 확인되지 않습니다. 내 jquery 코드에서 무엇이 문제입니까? 다음은 JSFiddle 입니다.

이것은 내 jquery 코드입니다.

jQuery(document).ready(function() {
$('.list-group-item input[type=checkbox]').on('click', function() {
var totalCheckbox = $(this).closest('ul').find('li input[type=checkbox]').length;
var checkboxChecked = $(this).closest('ul').find('li input:checked').length;
var mainCheckbox = $(this).closest('.panel-default').find('.panel-title input[type=checkbox]');
if (totalCheckbox == checkboxChecked) {
    mainCheckbox.attr('checked', true);
} else {
    mainCheckbox.attr('checked', false);
}
})
});
자로 만다 X

내 jquery 코드에서 무엇이 문제입니까?

페이지가로드 될 때 발생하지 않는 클릭에 대한 응답으로 만 실행된다는 점을 제외하고는 아무것도 없습니다.

코드 반복을 피하기 위해 함수를 생성하세요. 여기에서는 현재 열풍을 기념하여 gottaCheckEmAll

jQuery(document).ready(function() {
    function gottaCheckEmAll() {
        var totalCheckbox = $(this).closest('ul').find('li input[type=checkbox]').length;
        var checkboxChecked = $(this).closest('ul').find('li input:checked').length;
        var mainCheckbox = $(this).closest('.panel-default').find('.panel-title input[type=checkbox]');
        console.log(totalCheckbox, checkboxChecked, mainCheckbox);
        if (totalCheckbox == checkboxChecked) {
            mainCheckbox.attr('checked', true);
        } else {
            mainCheckbox.attr('checked', false);
        }
    }
    $('.list-group-item input[type=checkbox]').on('click', gottaCheckEmAll);
    gottaCheckEmAll.call($('.list-group-item input[type=checkbox]')[0]);
});

함수의 내용은 클릭 이벤트의 본문이므로 클릭 this한 것처럼 확인란 중 하나에 설정된 .call을 사용하여 호출 됩니다.

작업 코드

마지막 두 줄 다음과 같이 쓸 있습니다.

gottaCheckEmAll.call($('.list-group-item input[type=checkbox]').on('click', gottaCheckEmAll)[0]);

그것이 얼마나 읽기 쉬운 지 확실하지 않습니다.

그러나 코드를 단순화하려면 다음을 수행하십시오.

jQuery(function() { //shorthand notation of jQuery(document).ready(
    function gottaCheckEmAll() {
        // simplify checking, just see if anything is unchecked
        var checkboxUnchecked = $(this).closest('ul').find('li :not(input:checked)').length;
        var mainCheckbox = $(this).closest('.panel-default').find('.panel-title input[type=checkbox]');
        // main is checked if no subs unchecked
        // don't use .attr() here for some reason
        mainCheckbox[0].checked = !checkboxUnchecked;
    }
    gottaCheckEmAll.call($('.list-group-item input[type=checkbox]').on('click', gottaCheckEmAll)[0]);
});

부모 클릭 처리와 함께 업데이트 된 작업 코드

위의 코드는

jQuery(function() {
    function gottaCheckEmAll() {
        console.log(this);
        var checkboxUnchecked = $(this).closest('ul').find('li :not(input:checked)').length;
        var mainCheckbox = $(this).closest('.panel-default').find('.panel-title input[type=checkbox]');
        mainCheckbox[0].checked = !checkboxUnchecked;
    }
    gottaCheckEmAll.call($('.list-group-item input[type=checkbox]').on('click', gottaCheckEmAll)[0]);
    $('input[value="Accessories"]').on('click', function() {
        var checked = this.checked;
        console.log(checked);
        $(this).closest('.panel').find('.list-group-item input').each(function(i, el) {
            el.checked = checked
        });
    })
});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Linq에서 XML로 모든 상위 및 하위 항목 선택

분류에서Dev

모든 관찰 가능 항목이 완료 될 때까지 기다립니다 (순서 + 상위 하위 관계).

분류에서Dev

선택 항목이있을 때 QTextEdit 위젯이 스크롤되지 않도록 방지

분류에서Dev

모바일 브라우저에서 페이지가로드 될 때 선택한 항목에 긴 문자열을 표시하는 방법

분류에서Dev

중첩되지 않은 특정 하위 항목이 여러 개인 div 선택

분류에서Dev

선택한 모든 항목을 게시하지 않는 데이터 테이블

분류에서Dev

angularjs에서 필터링 할 때 선택 상자에 선택한 항목이 표시되지 않습니다.

분류에서Dev

MySQL : 항목의 상위 및 조부모 이름 선택

분류에서Dev

표시되지 않은 UL에서 LI 하위 항목 선택

분류에서Dev

하위 항목을 선택하지 않고 요소 선택

분류에서Dev

Visual Studio의 "도구 상자 항목 선택"창이로드되지 않음

분류에서Dev

내 옵션이 모든 선택 항목에 추가되지 않는 이유

분류에서Dev

다음 항목이 표시되지 않을 때 항목에 대한 자바 스크립트 선택기

분류에서Dev

CSS로 하위 목록이없는 목록 항목 선택

분류에서Dev

CSS로 하위 목록이없는 목록 항목 선택

분류에서Dev

항목이 추가 될 때 RecyclerView가 맨 위로 고정되지 않습니다.

분류에서Dev

배열을 정렬하는 방법과 동시에 페이지가 Javascript로로드 될 때마다 항목을 선택하는 방법

분류에서Dev

처음 N을 제외한 모든 하위 항목 선택-CSS 선택기

분류에서Dev

컨테이너 jquery 내에 있지 않은 하위 항목 선택

분류에서Dev

상위 선택 옵션의 값이 변경 될 때 특정 하위 선택 옵션을 표시하는 방법

분류에서Dev

ListBox ItemTemplate 내의 버튼이 항목을 선택하지 않음

분류에서Dev

하위 항목이 추가 될 때 Xamarin Forms ScrollView 지터

분류에서Dev

선택 변경시 SelectableList에 선택한 항목이 표시되지 않음

분류에서Dev

Rails 4 선택 항목이 표시되지 않음

분류에서Dev

Kendo DropDownList에 선택한 항목이 표시되지 않음

분류에서Dev

ng-repeat를 사용하여 다시로드 할 때 선택한 항목의 내용이 설정되지 않음

분류에서Dev

선택한 모든 항목을 PHP 페이지에 게시

분류에서Dev

CheckBoxList의 선택된 선택 항목이 페이지로드시 채워지지 않음

분류에서Dev

항목이 선택 될 때 ActionBar Spinner 닫기

Related 관련 기사

  1. 1

    Linq에서 XML로 모든 상위 및 하위 항목 선택

  2. 2

    모든 관찰 가능 항목이 완료 될 때까지 기다립니다 (순서 + 상위 하위 관계).

  3. 3

    선택 항목이있을 때 QTextEdit 위젯이 스크롤되지 않도록 방지

  4. 4

    모바일 브라우저에서 페이지가로드 될 때 선택한 항목에 긴 문자열을 표시하는 방법

  5. 5

    중첩되지 않은 특정 하위 항목이 여러 개인 div 선택

  6. 6

    선택한 모든 항목을 게시하지 않는 데이터 테이블

  7. 7

    angularjs에서 필터링 할 때 선택 상자에 선택한 항목이 표시되지 않습니다.

  8. 8

    MySQL : 항목의 상위 및 조부모 이름 선택

  9. 9

    표시되지 않은 UL에서 LI 하위 항목 선택

  10. 10

    하위 항목을 선택하지 않고 요소 선택

  11. 11

    Visual Studio의 "도구 상자 항목 선택"창이로드되지 않음

  12. 12

    내 옵션이 모든 선택 항목에 추가되지 않는 이유

  13. 13

    다음 항목이 표시되지 않을 때 항목에 대한 자바 스크립트 선택기

  14. 14

    CSS로 하위 목록이없는 목록 항목 선택

  15. 15

    CSS로 하위 목록이없는 목록 항목 선택

  16. 16

    항목이 추가 될 때 RecyclerView가 맨 위로 고정되지 않습니다.

  17. 17

    배열을 정렬하는 방법과 동시에 페이지가 Javascript로로드 될 때마다 항목을 선택하는 방법

  18. 18

    처음 N을 제외한 모든 하위 항목 선택-CSS 선택기

  19. 19

    컨테이너 jquery 내에 있지 않은 하위 항목 선택

  20. 20

    상위 선택 옵션의 값이 변경 될 때 특정 하위 선택 옵션을 표시하는 방법

  21. 21

    ListBox ItemTemplate 내의 버튼이 항목을 선택하지 않음

  22. 22

    하위 항목이 추가 될 때 Xamarin Forms ScrollView 지터

  23. 23

    선택 변경시 SelectableList에 선택한 항목이 표시되지 않음

  24. 24

    Rails 4 선택 항목이 표시되지 않음

  25. 25

    Kendo DropDownList에 선택한 항목이 표시되지 않음

  26. 26

    ng-repeat를 사용하여 다시로드 할 때 선택한 항목의 내용이 설정되지 않음

  27. 27

    선택한 모든 항목을 PHP 페이지에 게시

  28. 28

    CheckBoxList의 선택된 선택 항목이 페이지로드시 채워지지 않음

  29. 29

    항목이 선택 될 때 ActionBar Spinner 닫기

뜨겁다태그

보관