attr은 속성값 그 자체로,
prop()는 bool식으로 제어용도로 사용함. 그래서 checked나 disable 같은 bool 형식이 값인 속성을 다룰 때 많이 사용.
$('input:checkbox').eq(0).attr('checked','checked');
$('input:checkbox').eq(1).prop('checked', true);
근데,
$('input:checkbox').eq(1).attr('checked', true);
이것도 되긴 함..
이 둘의 차이는, attr은 true를 문자열로 전달한다고 함. 이 bool속성이 아닌 문자열이 브라우저 호환이라던지 문제가 있을 수 있다고 함.
그리고, html에서 checked나 disabled같은 bool속성은 일반적으로 값이 있는게 아니라 존재 유무에 따라 설정됨.
차이점은
$('input:checkbox').eq(1).attr('checked', true);
는
<input type="checkbox" checked="true">
$('input:checkbox').eq(1).prop('checked', true);
는
<input type="checkbox" checked>
로 더 명확함.
그래서 일반적으로 bool 속성을 다룰 때는 암묵적으로, prop()를 사용함.