jquery选择器问题?

时间:2011-02-16 12:17:51

标签: jquery colors

$('.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在未选中其中的复选框时会重新着色,但是当它被选中时它不会重新着色。

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

那可能是什么?

1 个答案:

答案 0 :(得分:1)

如果该复选框是.lecture的直接子项,那么您的第二个规则将定位它。

但是如果你点击右边的复选框,那么

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

将返回一个空的jQuery对象,因为您尝试找到 复选框(并且 this 复选框)..

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