2011-08-06 20 views
3

何らかの理由で、この小さなコードによって、ユーザーが実際のチェックボックスをチェックしてその中にチェックマークを付けることが妨げられています。チェックするには行をクリックするしかありません。チェックボックスの操作

$('table tr').click(function() { 

    checkBox = $(this).children('td').children('input[type=checkbox]'); 

    if(checkBox.attr('checked')) 
     checkBox.removeAttr('checked'); 
    else 
     checkBox.attr('checked', 'checked'); 

}); 
+1

あなたはjsfiddleを準備するだろうか? –

+1

btw。 checkBox.prop( 'checked'、!checkBox.attr( 'checked'))はすばやくする必要があります –

+1

私はこのコードのその点を理解していません。 –

答えて

5

あなたが入力のデフォルトのチェックボックスの動作を無効にしている理由は、チェックボックスがtrの内側にあるということですので、あなたは、あなたがあなたのJavascriptを火災やチェックボックスを切り替えるチェックボックスにチェックを入れたときに...リード何も起こっていない。 target of your event:checkboxでないことを確認する必要があります。

また、チェックボックスの属性について心配する必要はありません... jQueryを使用すると、簡単に.click()することができます!

$('table tr').click(function(event) {  

    if (! $(event.target).is("input:checkbox")) 
     $(this).find('input:checkbox').click();   
}); 

Working example

2
$('table tr').click(function() { 
    $(this).find(':checkbox').each(function(){ 
     if($(this).is(':checked')) 
     { 
      $(this).removeProp('checked'); 
     } 
     else 
     { 
      $(this).prop('checked',true); 
     } 
    }); 
}); 
+0

これは私にとってもうまくいきません。チェックボックスをクリックすると、その内部にチェックマークがついていません。 –

関連する問題