2012-02-05 78 views
2

我一直在遇到很多與我的功能有關的問題。 函數應該檢查所有的複選框,如果第一行中的複選框被選中,相反。 這是我寫的:取得所有複選框

$("#meetingspanel").on("click", ":checkbox", function() { 
    if ($(this).parent().parent() == ($("tr:first"))) { 
    chboxcondition++; 
    if (chboxcondition % 2 !=0) { 
     $(":checkbox").each(function() { 
     $(this).attr('checked', true); 
     }); 
    } else { 
     $(":checkbox").each(function() { 
     $(this).attr('checked', false); 
     }); 
    } 
    } else 
    return false; 
}); 

它通過檢查所有這些和取消選中的。問題在於,無論按下哪個複選框,它都會檢查並取消選中,即使是第五個,我也只需要第一行中的第一個複選框。

這是複選框創建如何去

$("<td style=border:0px><input type='checkbox' id='btncb'></td>").insertAfter($("td:nth-child(6)")); 
+0

$(「:checkbox」)。each,this will get EVERY checkbox ... maybe such like this will:$(「tr:first:checkbox」) – Cristy 2012-02-05 15:07:48

+0

why why您是否只將該事件偵聽器添加到第一個複選框中,從而節省事件偵聽器內部所有顯着的麻煩? – kontur 2012-02-05 15:08:32

+0

你的標記看起來像 – Rafay 2012-02-05 15:17:13

回答

0

問題是您將要檢查(檢查所有複選框與否)在同一面板的複選框。

解決方案,將其他複選框放在一個div中,在上面的函數中聲明'checkBoxDiv'和us ethat div標識符。這需要注意控制複選框不受影響

+0

不是很好的原因,因爲該表格中的複選框有一些構建,這裏是: $(「td style = border:0px> ($(「td:nth-​​child(6)」));} .insertAfter($(「td: 它從另一個函數工作 – 2012-02-05 15:11:09