2011-02-16 89 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結構,如果您認爲這不是問題..