2011-02-16 4 views
0
$('.lecture, .lecture > *:not(".meta")').click(function(event) { 
    event.stopPropagation(); 
    var myCheckbox = $(this).children(':checkbox'); 

    if(myCheckbox.is(':checked')){ 
     myCheckbox.removeAttr('checked'); 
     $(this).closest('.vortrag').css({'background':'#F0F0F0'}); 
    }else{ 
     myCheckbox.attr('checked','checked'); 
     $(this).closest('.vortrag').css({'background':'#F8C1AC'}); 
    } 
}); 

누구나 내 .lecture div의 체크 박스가 선택되지 않았을 때 그 색을 다시 채색하는 이유를 설명 할 수 있습니다.하지만 선택하면 다시 채색되지 않습니다.jquery selector 문제?

그래서 클래스로 .lecture가있는 div가 여러 개 있습니다. 해당 div 안에는 체크 박스가 있습니다. 체크 박스 자체를 클릭하지 않고 전체 div.lecture가 체크 박스를 트리거하기를 원합니다. 체크 박스가 선택되면 .lecture div는 다른 배경색을 가져야합니다. 모든 것이 잘 작동합니다. 부모 .lecture div를 클릭하면 확인란이 선택 및 선택 취소됩니다. 그리고 처음 클릭 할 때 심지어 색이 변합니다. 그러나 일단 체크 박스가 체크되고 그것을 다시 클릭하면 backgroundColor가 다시 변경되지 않습니다.

그게 뭐야?

+0

HTML 구조도 제공하십시오. –

답변

1

체크 박스가 .lecture의 직계 하위 항목 인 경우 두 번째 규칙이이를 타겟팅합니다.

하지만 당신은 체크 박스를 마우스 오른쪽 버튼을 클릭하면 당신이 아이 확인란을 찾으려고하기 때문에 다음

var myCheckbox = $(this).children(':checkbox'); 

는 빈의 jQuery 객체를 반환합니다 (그리고 this 체크 박스입니다) ..

문제가 아닌 것으로 생각되면 실제 html 구조를 제공해주세요 ..