iCheck jQuery 阻止自定义脚本

iCheck jQuery blocks custom script

我用"iCheck jQuery"修改了checkbox的样式。但是当我添加 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 脚本覆盖。尝试仅使用 jQuery:

$('#my_cb').on('click', function() {
    $('#row1').css('display', this.checked ? 'none' : 'inline');
});

iCheck registers custom events you can listen for. I put up a working example on jsbin,主要区别是:

$("#my_cb").on("ifChanged", hide_row_metod);

有两个事件:ifChecked and 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"));
});