2010-02-05 4 views
3

사용자가 페이지에서 체크 박스를 선택한 경우 클릭 기능을 허용하려고합니다. 그렇지 않으면 #additional_foreign 버튼에 클래스를 추가하고 싶습니다.JQuery로 체크 박스가 선택되었는지 어떻게 확인합니까?

나는 가깝다고 생각하지만 작동하지 않는 것 같습니다.

if($('#foreign_checkbox').attr('checked')) { 
    $('#additional_foreign').click(function() { 
     alert('This click function works'); 
    }); 
} else { 
    $('#additional_foreign').addClass('btn_disable'); 
} 

내가 확인란을 선택하면,이 클릭 기능을 허용하지 않습니다 내가 체크 박스를 체크 해제하면, 그것은 또한 예상대로 클래스를 추가하지 않습니다 : 다음은 내 코드입니다.

내가 뭘 잘못하고 있니?

편집 : 여기에 설명을위한 HTML이 나와 있습니다.

<input id="foreign_checkbox" type="checkbox" /> 
<span id="additional_foreign">Click Me</span> 
+1

옆 기본 질문, 어떤 코드가 수행하는 버튼에 클릭 이벤트 처리기를 부착하는 것입니다 확인란이 선택되어 있지 않으면 '사용 안 함'으로 지정되지만 실제로는 사용할 수 없습니다. 체크 박스를 다시 선택 해제해도 버튼의 onclick 처리기가 제거되지 않습니다. –

+0

o.k.w. - 알았어. 조건부 문장의 else 영역에서 버튼을 unclickable로 만들려면 어떻게해야합니까? – zeckdude

+0

JQuery의 unbind()를 참조하십시오. btn_disable 클래스를 추가하면 아마도 버튼을 사용할 수 없기 때문에 조치를 제거하지 않는 것이 좋습니다. 반면에, 당신은 당신이 when-it's-checked 경우에 클래스를 제거해야 할 것입니다. –

답변

8

시도 $('#foreign_checkbox').is(":checked")를 사용하여 - 코드의 나머지 부분이 잘 보이는 이것이 내가하기 위해 이런 일을 할 거라고 내 코드라면

가 작동 :

<input id="foreign_checkbox" type="checkbox" /> 
<span style='display:none' id="additional_foreign">Click Me</span> 

<script type="text/javascript"> 
    $(document).ready(function() { 

     $("#foreign_checkbox").click(function() { 
      if($('#foreign_checkbox').is(':checked')) { 
       $('#additional_foreign').show(); 
      } else { 
       $('#additional_foreign').hide(); 
      } 
     }); 

     $('#additional_foreign').click(function() { 
      alert('This click function works'); 
     }); 
    }); 
</script> 
+0

내가 그렇게하면 조건문의 else 부분이 작동하지만 확인란을 선택했을 때 click 함수가 여전히 작동하지 않습니다. – zeckdude

+0

You #additional_foreign의 onclick 처리기에 내부 doSomething() 함수를 추가했습니다.이 함수는 의도적 인 것으로 의심합니다. –

+0

'additional_foreign' 체크 박스를 체크하면 아무 일도 일어나지 않습니다. 먼저'if' 문의 바인딩을 if 문 외부로 옮깁니다. 'foreign_checkbox'가 체크 될 때마다 바인드하지 않으려면 여러 이벤트가 실행됩니다. 그런 다음 if 문 내에서 단순히 다른 체크 상자를 숨기거나 표시합니다. HTML을 게시 하시겠습니까? –

5

문제는 그 코드가 계속 실행되지 않고 페이지가로드 될 때만 모든 상자가 선택 취소됩니다. 당신은 버튼 액션이나 클래스를 추가하는 확인란을 선택하거나 선택 해제 할 때 발사하는 행동을해야합니다

$('#foreign_checkbox').change(function(){ 
    if (this.checked){ 
     $('#additional_foreign').click(function() { 
      doSomething(); 
     }); 
    } else { 
     $('#additional_foreign').addClass('btn_disable'); 
    } 
}); 
+0

와우는 내가 당신을 발견 할 때까지 고생했습니다. ** 문제는 코드가 지속적으로 실행되지 않는다는 것입니다. **. .change는 나를 위해 더 잘 작동한다. –

관련 문제