2010-05-12 8 views
1

jQuery에서 라디오 버튼 세트에 대해 다음과 같은 코드가 있습니다 (일부 숨겨진 필드가 표시됨). 이전에 각 개별 선택기에 대해 동일한 코드를 복제 했으므로 아래 코드에서 여러 선택기를 사용했습니다. 그러나 이것은 실제로 작동하지 않습니다. 두 개의 라디오 버튼이 같은 페이지에있을 때 올바른 표시/숨기기 동작이 엉망이되는 것 같습니다. 내가 $ (this)를 live()와 함께 사용하고 있기 때문입니까? 아니면 제가 잘못하고있는 다른 것이 있습니까? 어떤 도움을 주셔서 감사합니다.이 코드를 가능한 한 깨끗하게 유지하려고 시도하고, 각 선택기에 대해 반복해서 반복하지 않아도되도록하고 싶습니다!jquery 라디오 버튼 클릭 이벤트 문제

//event handler for radio fields with subsections 
     $("input[name='registered'], input[name='voted'], input[name='report'], input[name='newsletter']").live("click", function(){ 
      //check if value is true 
      if ($(this + ":checked").val() == '1') 
       $(this).parent().find('span.hidden').fadeIn("slow"); 
      else 
       $(this).parent().find('span.hidden').hide(); 
     }); 

답변

1

if 문에있는 선택자가 올바르지 않습니다. 시도 :

if ($(this).filter(':checked').val() == '1') 

또는

if ($(this).val() == '1') 

당신이 그것을 가지고 방법을, 그것은 this 요소를 캐릭터 라인 화하고 "확인"을 앞에 추가합니다. 분명히 당신이 원하는 것이 아닙니다. 당신이 원하는 것은 클릭 된 요소가 하나만 이벤트를 발생시킬 것이므로 this은 클릭 된 요소에 해당하므로 필터가 필요 없다는 것을 알면 올바른 값을 갖게됩니다.

+1

$ (this) .is ('checked :)'옵션도 잊지 말고 항상 읽기 쉬운 것으로 보입니다. –

+0

감사합니다 얘들 아 - 완벽하게 작동합니다. –