問題の1つはchecked
、上部のチェックボックスとラベルを囲むスパンに属性があり、イベントハンドラーをスパンにバインドしていたため、checked
常にスパンにとどまるchecked
ということでした。
代わりに、イベントハンドラーをチェックボックスに移動し、コードを少し整理しました。HTML要素に独自の属性を作成することに問題があるとは思いませんが(XHTMLの厳密な検証は失敗すると思います)、そうすることが良い習慣であると考えられているかどうかはわかりません。
IDマングリングに基づいてASP.NETを使用していることがわかります。サーバー側<%= myControl.ClientID %>
を使用して、クライアントに送信されたHTMLでレンダリングするマングルIDを取得できます。
ここでの作業例
$(function() {
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').unbind('click');
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').click( function() {
var cbs = $('table input:checkbox');
if($(this).is(':checked')){
cbs.each(function() { $(this).attr('checked', true); });
}
else{
cbs.each(function() { $(this).attr('checked', false); });
}
});
});
編集:
あなたのコメントに応えて、clientidを解決するためのいくつかのオプションがあります。aspxページでjQueryを作成する場合は、次を使用できます。
$('#<%= cbOzelKurumHastasi.ClientID %>')
代わりに
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi')
jQueryが外部スクリプトファイルにある場合は、これをaspxページに配置できます
<script type="text/javascript">
var cbOzelKurumHastasi = '#<%= cbOzelKurumHastasi.ClientID %>';
</script>
次に、外部スクリプトファイルで変数を使用します
$(function() {
$(cbOzelKurumHastasi).unbind('click');
$(cbOzelKurumHastasi).click( function() { ...
他のオプションについては、この質問と回答をご覧ください-jQueryを使用するためにASP.NETがIDを変更しないようにする方法