jquery - 具有强大插件的复选框样式

标签 jquery css checkbox

我正在尝试使用 CSS/JS 为复选框制作自定义样式

目前位于 http://www.fb-navigatio.com/markersparebank2/ .

我为复选框创建了样式:

.frm_checkbox label input{
    display:none;   
}
.frm_checkbox label {
    background: url("images/check_sprite.png") no-repeat scroll 0 0;
    padding: 4px 0 8px 42px;
    position:relative;
    z-index:100;
    cursor:pointer;
}
.frm_checkbox label:hover {
    background: url("images/check_sprite.png") no-repeat scroll 0 -40px;
}
.frm_checkbox label.checked{
    background: url("images/check_sprite.png") no-repeat scroll 0 -80px;    
}

这是JS代码:

jQuery(document).ready(function($){
    var tmp = [];
    $('input:checkbox').each(function(index){
        tmp[index] = '';
    })
    $('.frm_checkbox label').click(function(index){

        if(tmp[index] == ''){
            $(this).addClass('checked');
            $(this).find('input:checkbox').addAttr('checked');
            console.log(tmp[index]);
        }else if(tmp[index] =='1') {
            tmp[index] = '0';
            $(this).removeClass('checked');
            $(this).find('input').removeAttr('checked');
            console.log(tmp[index]);
        }
        //var $checkbox = $(this).find(':checkbox');
        //$checkbox.attr('checked', !$checkbox.is(':checked'));
        //alert();
    });
});

问题是复选框不起作用。单击复选框似乎并没有选中它。

最佳答案

以下是我发现的一些潜在问题:

  1. jQuery 没有函数 addAttrremoveAttr。您应该使用 prop('checked', true)prop('checked', false),如本问题所述: Setting "checked" for a checkbox with jQuery? 可以找到 jQuery 文档 on its website .

  2. 您正在使用复选框中的索引为 tmp 设置初始值,但随后尝试将这些索引用于标签。这有点冒险。我建议将数据属性附加到元素本身:$checkbox.data('checkedState', false)

  3. 您的 if-else 语句检查 tmp 值是否等于 '''1'。但是,您也有 '0',这是您在取消选中时设置的。由于您从不检查 '0',这意味着您将永远无法在取消选中复选框后选中它。您可以只有两个值,而不是 ''

  4. 的第三个默认值

如果这些建议能解决您的问题,请告诉我。如果没有,请设置一个jsFiddle以便其他人可以自己尝试、调试和修改代码。

关于jquery - 具有强大插件的复选框样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21098111/

相关文章:

javascript - 显示 :none style not working

javascript - 动态添加按钮后刷新 jQm header

jquery - 为什么 Opera 扩展后台页面无法使用 cookie?

javascript - 使用功能更改复选框上的 div 内容单击不起作用

php - 在 php 中编辑复选框数据并在 mysql 中更新行

javascript - AngularJS 使用 ngModel 从 Checkbox 集中获取复杂对象

javascript - 如何确定元素上设置了 CSS 属性?

jquery - 创建类似 Flipboard 仪表板图像翻转的网络动画

javascript - window.body.scrollHeight 在降低高度时不会改变

css - 需要帮助在 Cakephp 2 中内联多个复选框