programing tip

.prop ( 'checked', false) 또는 .removeAttr ( 'checked')?

itbloger 2020. 8. 8. 11:42
반응형

.prop ( 'checked', false) 또는 .removeAttr ( 'checked')?


prop 메소드의 도입으로 이제 허용되는 확인란 선택 해제 방법을 알아야합니다. 그것은 :

$('input').filter(':checkbox').removeAttr('checked');

또는

$('input').filter(':checkbox').prop('checked',false);

jQuery 3

jQuery 3부터는 해당 속성을 더 이상 설정 removeAttr하지 않습니다false .

사용 jQuery를 3.0 이전 .removeAttr()부울 속성에 같은 checked, selected또는 readonly도에 해당라는 이름의 속성을 설정합니다 false. 이 동작은 이전 버전의 Internet Explorer에 필요했지만 특성이 초기 값을 나타내고 속성이 현재 (동적) 값을 나타 내기 때문에 최신 브라우저에는 올바르지 않습니다.

.removeAttr( "checked" )DOM 요소 에서 사용하는 것은 거의 항상 실수 입니다. 유용 할 수있는 유일한 경우는 DOM이 나중에 HTML 문자열로 다시 직렬화되는 경우입니다. 다른 모든 경우에는를 .prop( "checked", false )대신 사용해야합니다.

변경 로그

따라서이 .prop('checked',false)버전을 사용할 때만 올바른 방법입니다.


원래 답변 (2011 년부터) :

기본 부울 속성 (그 checked중 하나) removeAttr이있는 속성의 경우 기본 속성을로 자동 설정합니다 false. (이것은 jQuery 1.6.1에 추가 된 이전 버전과의 호환성 "수정"중 하나입니다.)

따라서 둘 중 하나가 작동하지만 ... 두 번째 예 (를 사용하여 prop)가 둘 중 더 정확합니다. 체크 박스의 선택을 취소하는 것이 목표 인 경우 속성 이 아닌 속성에 실제로 영향을 미치 길 원하며 removeAttr이를 수행 할 필요가 없습니다 .


use checked: true, false 확인란의 속성입니다.

jQuery :

if($('input[type=checkbox]').is(':checked')) {
    $(this).prop('checked',true);
} else {
    $(this).prop('checked',false);
}

Chrome에 문제가있어서 두 기능을 모두 사용하여 해결했기 때문에 prop 및 attr을 모두 사용하는 것이 좋습니다.

if ($(':checkbox').is(':checked')){
    $(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
    $(':checkbox').prop('checked', false).removeAttr('checked');
}

동일한 작업을 수행하는 또 다른 대안은 type = checkbox 속성 을 필터링하는 것입니다 .

$('input[type="checkbox"]').removeAttr('checked');

또는

$('input[type="checkbox"]').prop('checked' , false);

속성과 속성의 차이는 특정 상황에서 중요 할 수 있음을 기억하십시오. jQuery 1.6 이전 에는 .attr () 메서드가 일부 속성을 검색 할 때 속성 값을 고려하여 일관성없는 동작을 유발할 수 있습니다. jQuery 1.6부터 .prop () 메서드는 속성 값을 명시 적으로 검색하는 방법을 제공하는 반면 .attr ()은 속성을 검색합니다.

더 알고 ...

참고 URL : https://stackoverflow.com/questions/6169826/propchecked-false-or-removeattrchecked

반응형