2012-11-13 1 views
2

이 코드는 jQuery, ver.에서 작동합니다. 1.6.attr ("checked", true)가 Jquery 1.7 이상에서 작동하지 않는 이유

<input type="checkbox" class="radio" value="1" name="sameName" /> 
<input type="checkbox" class="radio" value="1" name="sameName" /> 
<input type="checkbox" class="radio" value="1" name="sameName" /> 

$("input:checkbox").click(function() { 
    if ($(this).attr("checked") === true) { 
     var group = "input:checkbox[name='" + $(this).attr("name") + "']"; 
     $(group).attr("checked", false); 
     $(this).attr("checked", true); 
    } else { 
     $(this).attr("checked", false); 
    } 
});​ 

하지만 나는 늘 작동 jQuery를 1.7의 새로운 방법을 사용하여 코드를 변경하면? 왜? 년의 시간을 주셔서 감사합니다 :

$("input:checkbox").on('click', function() { 
    if ($(this).attr("checked") === true) { 
     var group = "input:checkbox[name='" + $(this).attr("name") + "']"; 
     $(group).attr("checked", false); 
     $(this).attr("checked", true); 
    } else { 
     $(this).attr("checked", false); 
    } 
});​ 
+0

당신을 수행

$('#chkContainer').on('click', 'input:checkbox', function() { if ($(this).is(':checked')) { var group = "input:checkbox[name='" + $(this).attr("name") + "']"; $(group).attr("checked", false); $(this).attr("checked", true); } else { $(this).attr("checked", false); } }); 

이것은 당신을위한 예입니다 어떤 오류가 있습니까? – Jacta

+0

$ (그룹) .attr ("checked", "checked"); 이것을 위해 .prop() 함수도 있습니다. jQuery 문서를 확인하십시오. –

+0

나는 당신이하려는 것을 이해하지 못합니다. 이 내용을 올바르게 읽으면 다음과 같이 표시됩니다. 확인란을 클릭하면 체크 표시를 유지하고 다른 확인란을 선택 취소합니다. 선택하지 않은 경우 다시 선택을 취소하십시오. (?) 나는 체크 박스를 사용하여 라디오 버튼을 시뮬레이션한다고 가정 해 보겠습니까? –

답변

3

ATTR는 문자열을 반환 단축 할 수있다. 당신의 jQuery .prop에서 jQuery를 1.6

$("input:checkbox").on('click', function() { 
    if (this.checked) { 
     var group = "input:checkbox[name='" + $(this).attr("name") + "']"; 
     $(group).prop("checked", false); 
     $(this).prop("checked", true); 
    } else { 
     $(this).prop("checked", false); 
    } 
});​ 

() 문서

.prop() 메소드가 비활성화 설정하는 데 사용하고 대신 확인해야합니다에 대한 확인 속성을 설정 .prop를 사용한다 .attr() 메소드.

1

코드가 잘못되었습니다. .on() 이벤트는 요소의 컨테이너를 필요로합니다.

그래서 HTML 코드는 다음과 같아야합니다

<div id="chkContainer"> 
    <input type="checkbox" class="radio" value="1" name="sameName" /> 
    <input type="checkbox" class="radio" value="1" name="sameName" /> 
    <input type="checkbox" class="radio" value="1" name="sameName" /> 
</div> 

이 같은 JAVASCRIPT 기능 : http://jsfiddle.net/5xDzv/1/

+0

꼭 그런 것은 아닙니다. 클릭은 바인딩 될 때 요소가 동적이 아니고 존재할 경우'$ (element) .on ('click', function() {}); –

관련 문제