최근 jquery를 사용하여 직장에서 체크박스를 조작하고 다음 방법을 사용하여 모두 선택하고 선택을 반전시켰습니다.
var ischecked=allCheckObj.is(':checked')
ischecked?checksObj.attr('checked',true):checksObj.attr(' check',false);
디버깅 중 IE에서는 문제가 없었는데, 호환성을 고려해서 Firefox를 사용해보니 문제가 발생했습니다. 그래서 저는 다음과 같은 실험을 했습니다.
체크박스는 클릭 이벤트에 바인딩되어 있습니다. 한 번 클릭하면 선택되고 다시 클릭하면 선택이 취소됩니다. 이 기능은 IE에서는 잘 동작하는데, Firefox에서 테스트했을 때 처음 2번은 문제가 없었고, 선택 및 취소도 정상적으로 표시가 되었는데, 다시 체크박스를 선택하면 체크박스의 체크박스 속성값이 로 변경됩니다. "checked". 문제는 없지만 확인란이 더 이상 선택된 상태를 표시하지 않습니다. 속성 값이 변경되었으나 확인란이 너무 이상하게 표시됩니다. 코드를 수정했지만 올바른 표시 상태를 얻을 수 없어 오랫동안 애썼는데 이유를 찾을 수 없었습니다.
정답 : 나중에 아이돌에게 지적을 받은 결과 jQuery 버전의 문제인 것으로 밝혀졌습니다. jQuery 버전이 1.9인 동안
$("**").attr("attrName"); 을 사용합니다. 이는 호환성 및 안정성 문제가 있음을 의미합니다.
jQuery API에서는 jQuery 1.6이 특히 checkBox의 체크 속성을 판단하기 위해 prop을 사용해야 한다고 명시하고 있습니다. 즉,
$("input[type='checkbox']").prop("checked")
$("input[type=') checkbox']" ).prop("disabled", false);
$("input[type='checkbox']").prop("checked", true);
Change attr을 prop으로 사용할 때 사용되며 문제가 해결됩니다.
이런 이상한 문제를 겪으신 적이 있나요? 빨리 시도해 보세요