JQuery 선택/역선택의 두 번째 실패를 해결하는 방법

小云云
풀어 주다: 2017-12-27 09:03:58
원래의
1200명이 탐색했습니다.

최근 프로젝트에서 선택/선택 취소 기능을 테스트할 때 상위 상자를 처음으로 선택/선택 취소하면 하위 상자의 전체 선택/선택 취소 상태가 동기화될 수 있는 문제가 발생했습니다. 상위 상자를 클릭하면 하위 상자가 응답하지 않게 됩니다. 이번 글에서는 JQuery 전체 선택/역선택이 두 번째로 실패하는 문제를 해결하기 위한 글을 가져왔습니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

원본 코드의 대략적인 구조에 대한 핵심은 다음과 같습니다.

function selectAll(obj){
    $('input[name="xxx[]"]').attr("checked",obj.checked);
}

<input type="checkbox" id="mother" name="mother" onclick="selectAll(this);"/>全选

<input type="checkbox" id="son1" name="xxx[]" />子框<input type="checkbox" id="son2" name="xxx[]" />子框<input type="checkbox" id="son3" name="xxx[]" />子框<input type="checkbox" id="son4" name="xxx[]" />子框
로그인 후 복사

1단계: 긍정적인 물결을 시도합니다:

function selectAll(obj){
   if(obj.checked) {
    $('input[name="xxx[]"]').attr("checked", true);
   } else {
    $('input[name="xxx[]"]').removeAttr("checked");
   }
}
로그인 후 복사

Pale ----- 전혀 효과가 없으므로 폐기합니다.

2단계: 인터넷에서 빠르게 검색한 결과 이 ​​문제를 겪은 사람들 사이에서 나는 수천 마일 떨어져 있을 것 같은 문제라는 것을 알았습니다. 몇개 클릭해서 살펴보니 기본적으로 attr 대신 prop을 사용하면 문제가 해결된다고 하는데 해결 방법은 다음과 같습니다.

그러나 프로젝트에 사용된 버전은 1.6보다 낮았고, 버전을 바꾸지 않는 것이 최선이라고 해서 포기했습니다.

3단계: JQuery를 포기할 수밖에 없습니다... 기본 js 작성 방법을 사용해 보세요. 코드는 다음과 같습니다.

function selectAll(obj){
 var xxx = document.getElementsByName("xxx[]");
  if(obj.checked) {
   for(var i = 0;i < xxx.length;i++) {
    xxx[i].checked = true;
   }
  } else {
   for(var i = 0;i < xxx.length;i++) {
    xxx[i].checked = false;
   }
  }
}
로그인 후 복사

테스트하고 성공적으로 해결하세요. 사실 작은 문제지만 어느 한 박스에 국한되지 않고 다른 각도에서 생각해보면 문제를 더 잘 해결할 수 있는 경우가 많습니다.

관련 권장 사항:

js 모두 선택 및 선택 해제

js 모두 선택 및 체크박스 반전 방법

Js 프런트 엔드 선택 및 반전 구현

위 내용은 JQuery 선택/역선택의 두 번째 실패를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿