2010-05-28 10 views
0

안녕하세요, 나는 그 (것)들에 종류가없는 모든 체크 박스를 검사하거나 선택을 해제하는 것을 시도한다. 이것은 내가 가진 코드이지만 클래스 상자를 확인합니다.클래스가있는 체크 박스를 제외한 모든 체크 박스를 선택 취소 하시겠습니까?

$(document).ready(function() { 
     $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
     function() { 
     if (!$("input[type='checkbox']").hasClass("testclass")) { 
      $("input[type='checkbox']").attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
     }}); 
    }); 

내가 잘못 될 수있는 아이디어가 있습니까?

편집
이 빨아하지만 cssclass을 부여 할 때 체크 박스 자체가 클래스를 얻을 해달라고 그래서 asp.net이 확인란 입력 주위에 범위를 추가합니다. 나는 네가 말하는 것처럼하려고했지만, 그럴 수는 없지만 행운은 없다.

편집 코드

당신은 당신의 코드 (업데이트 질문 업데이트 )는이 같은 비트, 수정해야
<span class="testclass"><input id="ctl00_ContentPlaceHolder1_chxMale" type="checkbox" name="ctl00$ContentPlaceHolder1$chxMale" /></span> 
+0

하나의 체크 박스 (해당 기간 포함)에 대한 마크 업을 게시 할 수 있습니까? –

+0

@Dejan - 아래 답변은 마크 업을 위해 업데이트되었습니다. –

+0

Wont work. 체크 박스를 지금 선택 취소하지 마십시오 –

답변

3

:

$(function() { 
    $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(function() { 
    $(":not(.testclass) > input[type='checkbox']").attr('checked', this.checked); 
    }); 
}); 

현재 당신이있어를 첫 번째 일치 체크 박스가 있는지 확인하십시오. 클래스를 필터링하려는 경우 모두 클래스의 클래스가없는 경우 checked 속성을 설정하고 있습니다. 이를 수행하는 데는 몇 가지 방법이 있지만 여기서는 :not() 또는 .not()이 가장 쉽습니다. 위의 다른 변경 사항은 _chxAll 체크 박스의 이벤트 처리기에 있기 때문에 ID를 반복하는 대신 this을 사용할 수 있습니다.이 방법은 더 짧고 빠릅니다. .checked DOM 속성도 사용할 수 있습니다.

+0

와우 ... 당신은 심각하게'(this) .is ('checked :)'를'this.checked' ...보다 심각하게 선택하고 있습니까? – James

+0

@ J-P - 답변을 정제하는 중,'.checked' 속성 문서를 찾는데 어려움을 겪었습니다. 질문이있는 경우를 대비하여 링크를 제공하지 않으면 무언가를 사용하지 않습니다. :) –

1
$('input:checkbox').not('.testclass').attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
3

몇 가지 성능 향상을 추가했습니다.

var inputs = $('input:checkbox').not('.testclass'); 

$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
    function() { 
     inputs.attr('checked', this.checked); 
    } 
); 
관련 문제