2011-02-16 87 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选择器的问题?

所以我有多个与.lecture作为一个类的div。这些div里面有复选框。我希望整个div.lecture在点击时触发复选框(而不仅仅是复选框本身)。当复选框被选中时,.lecture div应该具有不同的背景颜色。一切正常。当我点击父母.lecture div时,复选框会被选中并取消选中。它甚至会在我第一次点击它时重新着色。然而,一旦复选框被选中,我再次单击它来取消选中它,backgroundColor不会再次更改。

这可能是什么?

+0

给我们您的html结构以及.. – 2011-02-16 12:21:09

回答

1

如果该复选框是.lecture的直接子项,那么您的第二条规则将以它为目标。

但是,如果你点击复选框右侧则

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

会返回一个空的jQuery对象,因为你试图找到一个孩子复选框(和this复选框)..

请提供实际的html结构,如果您认为这不是问题..