「iCheckjQuery」を使用してチェックボックスのスタイルを変更しました。しかし、iCheckスクリプトを追加すると、onlickメソッドが機能しなくなります。なぜそれが起こっているのですか?
<input id="my_cb" type="checkbox" value="yes_n" onclick="hide_row_metod()"/>
<script>
$(document).ready(function(){
$('#my_cb').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
私のスクリプト:
<script>
function hide_row_metod() {
if(document.getElementById('my_cb').checked){
document.getElementById('row1').style.display = "none";
}else{
document.getElementById('row1').style.display = "inline";
}
}
</script>
iCheck
リッスンできるカスタムイベントを登録します。 jsbinでの作業例 を載せましたが、主な違いは次のとおりです。
$("#my_cb").on("ifChanged", hide_row_metod);
2つのイベントがあります: ifChecked
およびifUnchecked
。チェックボックスへのすべての変更をキャッチする場合は、両方をリッスンするか、単にifChanged
をリッスンする必要があります。 hide_row_metod
でchecked
をテストしているので、これは行を切り替えるために機能します。
私の例では、ブロック要素div#row1
を使用しているため、チェックとチェックを外した後のレンダリングが異なります(inline
)。
また、メソッド名にタイプミスがあります(h
がありません)。
この質問が出されてからしばらく経ちました。各ラジオ/チェックボックスからonclick属性をキャプチャし、対応するiCheck/iRadioにアタッチするスクリプトを作成しました。 iCheckが適用された後に実行することを忘れないでください。タイムアウトを設定するか、iCheckの実装後に実行します。
$("[class*='icheckbox'],[class*='iradio']").each(function(){
$(this).find("ins").attr("onclick", $(this).find("input").attr("onclick"));
});
おそらくiCheck
スクリプトによってオーバーライドされます。 jQueryのみを使用してみてください。
$('#my_cb').on('click', function() {
$('#row1').css('display', this.checked ? 'none' : 'inline');
});