2009-10-19 4 views
2

그런 기본적인 질문이기 때문에 이것을위한 몇 가지 포인트를 잃어 버리 겠지만, "#"을 사용하여 jQuery 선택기를 잘못 사용하고있는 것을 알 수는 없습니다. 이드로 선택하십시오.jQuery 기본 도움말

내 문서이 요소를 주어진 :

(다음 태그 출력 :

<input checked="checked" id="IsAlwaysValidCheckBox" name="IsAlwaysValid" onchange="showHideValidSetList()" type="checkbox" value="true" /><input name="IsAlwaysValid" type="hidden" value="false" /> 

)

<%= Html.CheckBox("IsAlwaysValid", true, 
        new { onchange = "showHideValidSetList()", id = "IsAlwaysValidCheckBox" })%> 

:

<script type="text/javascript"> 
    function showHideValidSetList() { 
     if ($("#IsAlwaysValidCheckBox").checked) { 
      alert("IsAlwaysValidCheckBox is checked"); 
      return; 
     } 
     else { 
      alert("IsAlwaysValidCheckBox is NOT checked"); 
      return; 
     } 
    } 
</script> 
이어서

를 JQuery와 선택기를 사용하여이 기능

은 정확히 자바 스크립트 DOM을 사용하는 것과 같습니다.

<script type="text/javascript"> 
    function showHideValidSetList() { 
     if (document.getElementById("IsAlwaysValidCheckBox").checked) { 
      alert("IsAlwaysValidCheckBox is checked"); 
      return; 
     } 
     else { 
      alert("IsAlwaysValidCheckBox is NOT checked"); 
      return; 
     } 
    } 
</script> 

오른쪽? 그러나 javascript 버전은 예상대로 작동하지만 jQuery는 항상 "else"브랜치를 사용하여 실제로는 체크 박스의 상태를보고 있지 않습니다.

내가 뭘 잘못하고 있니?

나를 도와 주셔서 감사합니다.

+2

fyi, 우리는 "어리석은"질문을 downvote하지 않습니다; 아무도 없다. 우리는 중복을 downvote 수도 있습니다 ;-) – geowa4

답변

4

사용이 : 대신의

if ($(checkBoxControl).attr("checked")) { 

:

if ($("#IsAlwaysValidCheckBox").checked) { 

는 jQuery를 선택기처럼 보이지만이 (체크 박스 같은) DOM 요소를 반환, 그들은 정말하지 않는, JQuery와 객체를 반환 방법은 checked입니다. 당신은 (the current release, version 1.3.2에서) 압축되지 않은 JQuery와 소스 코드에서 가장 명확하게 볼 수 있습니다

흥미로운 jQuery를 방법
jQuery.fn = jQuery.prototype = { 
    init: function(selector, context) { 
     // ... 
     // Handle $(DOMElement) 
     if (selector.nodeType) { 
      this[0] = selector; 
      this.length = 1; 
      this.context = selector; 
      return this; 
     } 
     // ... 
    } 
} 

많은 지정되거나 재정의 this.context에서 작동 (애니메이션, ATTR, HTML, 등 등) 선택기를 적용 할 때마다

<script type="text/javascript"> 
    function showHideValidSetList() { 
     if ($("#IsAlwaysValidCheckBox").val()) { 
      alert("IsAlwaysValidCheckBox is checked"); 
      return; 
     } 
     else { 
      alert("IsAlwaysValidCheckBox is NOT checked"); 
      return; 
     } 
    } 
</script> 

val 방법은 값을 확인하는 "크로스 요소"방법의 일종입니다 ...이 텍스트 상자, 선택 목록, 또는 체크 박스인지 ... 당신이 사용할 수 있습니다

+0

고마워, 제프 (그리고 응답 다른 모든 사람). jQuery 객체를 반환하고 선택된 요소를 반환한다는 차이점을 이해하지 못했습니다. –

+0

내 기쁨 - jQuery를 좋아하지만 핵심 문서에서이 관용구를 설명하기 위해 그들을 죽이지는 않습니다. :) –

0

이 시도 .val()는 얻을 수/$("#IsAlwaysValidCheckBox")는 jQuery 오브젝트가 아닌 요소를 반환으로

3
$("#IsAlwaysValidCheckBox").checked 

:-) 그것의 값이 잘못 설정합니다. jQuery 객체에는 checked이라는 속성이 없으므로 else을 입력합니다.

은 당신이 원하는 :

$("#IsAlwaysValidCheckBox").val() 

나 :

$("#IsAlwaysValidCheckBox:checked").length > 0 

나 :

$("#IsAlwaysValidCheckBox").attr("checked") === "checked" 

나 :

$("#IsAlwaysValidCheckBox")[0].checked 

나 :

$("#IsAlwaysValidCheckBox").attr("checked") 

이 확인란이 선택 여부 결정 :

$("#IsAlwaysValidCheckBox").get(0).checked 
1

당신은 당신이를 사용할 필요가

if ($("#IsAlwaysValidCheckBox").attr("checked")) { 
1

를 사용하여 시도했다. 간단한 일을 할

1

또 다른 방법 :

$('#IsAlwaysValidCheckBox:checked').length

선택기 : 선택은 선택 요소를 반환 할 특정 JQuery와있다. 길이는 리턴 된 요소가 있는지 점검합니다.

여러 가지 방법으로 동일한 작업을 수행 할 수 있습니다.