2010-11-29 2 views
0

체크 박스의 체크 상태를 제어하기 위해이 onClick 이벤트를 얻을 수 없습니다. 그렇지 불구하고확인란을 선택 상태를 제어 할 수 없습니다 - jquery

 init: function() { 
      $('.billing input[type="checkbox"]').bind('click', function (e) { 
       e.preventDefault(); 
       iKeyless.page.toggleShippingForm($(e.currentTarget)); 
      }); 
     }, 
     toggleShippingForm: function (el) { 
      if (el.attr('checked')) { 
       $('.shipping').parents('.yui-u').addClass('hide'); 
       el.attr('checked', false); 
      } else { 
       $('.shipping').parents('.yui-u').removeClass('hide'); 
       el.attr('checked', true); 
      } 
     } 

그것은 확인 체크 박스와로드와 관계없이 내가하는 일의 확인 상태를 유지 ...

답변

0

그냥 ... <input> 요소를 참조 전달 this해야한다 JQuery와 객체를 필요로 여기에 작업 버전입니다 :

init: function() { 
    $('.billing input[type="checkbox"]').bind('click', function (e) { 
     e.preventDefault(); 
     iKeyless.page.toggleShippingForm($(this)); 
    }); 
}, 
toggleShippingForm: function (el) { 
    if (el.attr('checked')) { 
     $('.shipping').parents('.yui-u').addClass('hide'); 
     el.attr('checked', false); 
    } else { 
     $('.shipping').parents('.yui-u').removeClass('hide'); 
     el.attr('checked', true); 
    } 
} 

그러나 .checked는 DOM 속성이기 때문에, 당신은 단지 (JQuery와 객체로 변환하지 않고)이 작업을 수행 할 수 있습니다

init: function() { 
    $('.billing input[type="checkbox"]').change(function (e) { 
     e.preventDefault(); 
     iKeyless.page.toggleShippingForm(this); 
    }); 
}, 
toggleShippingForm: function (el) { 
    $('.shipping').parents('.yui-u').toggleClass('hide', el.checked); 
} 

요소가 변경 중입니다. .checked 상태 ... 이미 change 이벤트에서 사용하십시오. 필요한 경우 표시 방법에 따라 .toggleClass('hide', el.checked).toggleClass('hide', !el.checked)으로 변경하십시오.

관련 문제