변수가있는 id 선택 자로 .prop()를 사용하는 데 문제가 있습니다. 결국, 체크 박스를 선택하면 체크되고, 체크되어있을 경우 선택되지 않습니다..prop() 변수 선택기로 확인란을 선택하지 않음
이것은 목록 항목 상위 항목을 클릭하면 축소되어 펼쳐지는 주/도시 목록의 일부입니다.
바이올린 : https://jsfiddle.net/xeud8khg/
$('#expList input:checkbox').unbind('click').click(function() {
var clicked = "#" + event.target.id;
$(clicked).prop('checked', true);
console.log(clicked); //To see that the right id was selected.
return false;
});
업데이트 : 라벨에 체크 박스와 클릭의 토글을 추가 Barmar의 답변을 사용합니다. 나는 깨끗한 방법이 확신 해요,하지만이 일 :
//Fake checkbox
$('#expList input:checkbox').off('mouseup').mouseup(function(event) {
var clicked = "#" + event.target.id;
if ($(clicked).is(':checked'))
$(clicked).prop('checked', false);
else
($(clicked).prop('checked', true));
return false;
});
//Fake label
$('#expList label').off('mouseup').mouseup(function(event) {
labelID = "#" + $(this).attr('for');
if ($(labelID).is(':checked'))
$(labelID).prop('checked', false);
else
($(labelID).prop('checked', true));
return false;
});
업데이트 바이올린 : https://jsfiddle.net/fasr5frp/ 대신 click
바인딩의
'.unbind()'되지 않습니다, 당신은') ('.OFF를 사용해야합니다. ID를 찾는 대신'$ (this)'또는'$ (event.target)'을 사용할 수 있습니다. – Barmar
'event'를 전역 변수로 사용하는 것은 이식성이 없습니다. 콜백에 대한 인수 여야합니다. – Barmar
'.prop()'다음에 중단 점을 설정하면 상자가 선택되었지만 함수가 반환 된 후에 무언가가 체크되지 않는 것을 볼 수 있습니다. 나는 당신이 디폴트를 막고 있기 때문에 왜 그런지 확신하지 못합니다. – Barmar