확인란이 선택되어 있으면


126

확인란을 선택하면이 확인란을 선택하고 싶습니다 <p> #0099ff.

확인란의 선택을 취소하면 취소합니다.

내가 지금까지 작성한 코드 :

$('#checkbox').click(function(){
    if ($('#checkbox').attr('checked')) {
        /* NOT SURE WHAT TO DO HERE */
    }
}) 

1
"... 선택 해제하면 동일한 기능을 비활성화합니다." -전달 된 함수 .click()가 click 이벤트에서 호출됩니다. 따라서 "활성화"및 "비활성화"의 의미를 이해하지 못합니다. 확인란을 선택하면 기능을 호출 할 수 있습니다 a(). 그러나 확인란을 선택 하지 않은 경우 호출하려면 역 기능을 작성해야합니다 . 혼란 스러워요.
jensgram

당신은 물론, 수 .bind().unbind()에 이벤트 또 다른 요소는 체크 박스의 상태에 따라. 그게 당신이 추구하는 것입니까?
jensgram

1
스팸으로 유감이지만 내가 말하는 것에 대한 를 들었습니다 .
jensgram

1
나는 이것이 오래된 게시물이라는 것을 알고 있지만 jQuery는 prop()이 질문에 사용하려는 것을 사용 attr()합니다. 당시에는이 prop()방법이 만들어지지 않았습니다. this.checked그러나 아마도 대답은 여전히 유용 할 것입니다.
trysis

답변:


235

나는 사용 .change() 하고 this.checked:

$('#checkbox').change(function(){
    var c = this.checked ? '#f00' : '#09f';
    $('p').css('color', c);
});

-

사용에 this.checked
앤디 E를 : 좋은 쓰기까지 우리가 jQuery를 남용하는 경향이 방법을 수행 한 요소의 속성에 액세스에 jQuery를의 굉장한 능력을 활용을 . 물품은 특히 사용 취급 .attr("id")하지만 경우 #checkbox 이다<input type="checkbox" /> 소자 문제에 대해 동일 $(...).attr('checked')(또는 $(...).is(':checked')) 대 this.checked.


48

이 시도.

$('#checkbox').click(function(){
    if (this.checked) {
        $('p').css('color', '#0099ff')
    }
}) 

때로는 jquery를 과도하게 사용합니다. 일반 자바 스크립트와 함께 jquery를 사용하여 많은 것을 얻을 수 있습니다.


34

"this.checked"가 항상 "on"일 수 있습니다. 따라서 다음을 권장합니다.

$('#checkbox').change(function() {
  if ($(this).is(':checked')) {
    console.log('Checked');
  } else {
    console.log('Unchecked');
  }
});

내 경우에는 방금 $(':checkbox')작동하도록 변경 했습니다.)
Pathros

21

다른 색상으로 클래스를 정의하면 클래스가 더 좋습니다

$('#checkbox').click(function(){
    var chk = $(this);
    $('p').toggleClass('selected', chk.attr('checked'));
}) 

이 방법으로 모든 CSS 속성을 지정할 필요가 없기 때문에 코드가 더 깨끗합니다 (예 : 테두리, 텍스트 스타일 또는 기타를 추가하고 싶다고 가정하십시오).


4
일반 솔루션의 경우 +1 할 이유는 없다 $('#checkbox').attr('checked')우리가 알고있는 경우, 그러나, #checkbox 이다 (즉, ID가 오히려 오해의 소지하지 않은 경우) 확인란. this.checked할 것이다.
jensgram

@jensgram @fcalderan +1 팁 주셔서 감사합니다! 나는 스위치와 함께 toggleClass를 본 적이 없다. 쓸모없는 게시물을 삭제하고 있습니다. 너무 까다로워서 죄송하지만 '#checkbox'를 두 번 선택하지 않으면이 답변이 100 % 완벽하다고 생각합니다. 대신 $ (this) 대신 사용합니까? 아니면 jensgram의 솔루션입니까?
공격

@attack은 물론 사용하기 전에 요소를 캐시 할 수 있습니다 (지금 코드 참조). this.checked는 $ (..). attr ( 'checked')보다 훨씬 빠릅니다.

4

이 확인란의 문제를 처리하기위한 미친 해결책을 찾았습니다. 여기에서 확인하거나 선택하지 않았습니다. 내 알고리즘입니다 ... 글로벌 변수 만들기 var check_holder

check_holder 는 3 가지 상태가 있습니다

  1. 정의되지 않은 상태
  2. 0 상태
  3. 1 개 주

확인란을 클릭하면

$(document).on("click","#check",function(){
    if(typeof(check_holder)=="undefined"){
          //this means that it is the first time and the check is going to be checked
          //do something
          check_holder=1; //indicates that the is checked,it is in checked state
    }
    else if(check_holder==1){
          //do something when the check is going to be unchecked
          check_holder=0; //it means that it is not checked,it is in unchecked state
    }
     else if(check_holder==0){
            //do something when the check is going to be checked
            check_holder=1;//indicates that it is in a checked state
     }
});

위의 코드는 많은 상황에서 확인란이 선택되어 있는지 확인하는 데 사용될 수 있습니다. 기본 개념은 확인란 상태를 변수에 저장하는 것입니다 (예 : 켜져있을 때). 논리를 사용하여 문제를 해결할 수 있기를 바랍니다.


1
해결책은 실제로 미쳤지 만 좋은 방법은 아닙니다. 예, 글로벌 변수는 오늘날 문제를 해결하는 데 도움이 될 수 있지만 내일은 거의 확실하게 문제가 될 것입니다. 가능하면 99 %의 시간을 피하십시오. 전역 상태에 대해 걱정하지 않고 코드를 추론하는 것이 불가능합니다. 하나의 전역 변수는 무해 해 보이지만 빠르게 수십에서 수백이됩니다. 거기에 있었고, 그것을 보았고 예쁘지 않습니다.
bijancn

3

이 코드를 확인하십시오 :

<!-- script to check whether checkbox checked or not using prop function -->
<script>
$('#change_password').click(function(){
    if($(this).prop("checked") == true){ //can also use $(this).prop("checked") which will return a boolean.
        alert("checked");
    }
    else if($(this).prop("checked") == false){
        alert("Checkbox is unchecked.");
    }
});
</script>

1
$('#checkbox').change(function(){
   (this.checked)?$('p').css('color','#0099ff'):$('p').css('color','another_color');
});

1

아마도이 코드를 사용하여 확인란을 선택하거나 선택 취소했을 때 조치를 취할 수 있습니다.

$('#chk').on('click',function(){
    if(this.checked==true){
      alert('yes');
    }else{
      alert('no');
    }
});


0

최적의 구현

$('#checkbox').on('change', function(){
    $('p').css('color', this.checked ? '#09f' : '');
});

데모

$('#checkbox').on('change', function(){
    $('p').css('color', this.checked ? '#09f' : '');
});
<script src="https://code.jquery.com/jquery-1.12.2.min.js"></script>
<input id="checkbox" type="checkbox" /> 
<p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<p>
    Ut enim ad minim veniam, quis nostrud exercitation ullamco
    laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
    dolor in reprehenderit in voluptate velit esse cillum dolore eu
    fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est
    laborum.
</p>


0

내장 이벤트를 사용하지 않는 이유는 무엇입니까?

$('#checkbox').click(function(e){
    if(e.target.checked) {
     // code to run if checked
        console.log('Checked');

     } else {

     //code to run if unchecked
        console.log('Unchecked');
     }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.