0

我有一个看起来像切换按钮的列表,但它们实际上是一个偏好清单。因此,输入被隐藏,如果选中复选框,我希望将一个类添加到父标签。

一切都很好,除了在 IE8 中不开心。我认为这可能是 .change,但我无法完全弄清楚如何使用 .click 来实现这一点,我的尝试以失败告终。

小提琴在这里!

HTML

<li>
    <label class="checkbox">
        <input type="checkbox" data-toggle="checkbox" />
        <span class="btn-flat">Option</span>
    </label>
</li>

JS

$('.checkbox input').change(function() {
    if (this.checked) {
        $(this).parent('.checkbox').addClass('checked');
        $(this).attr('checked','checked');
    }else {
        $(this).parent('.checkbox').removeClass('checked');
        $(this).removeAttr('checked');
    }
});
4

2 回答 2

1

所以,如果这被选中,检查它?

if (this.checked) {
    $(this).attr('checked','checked');
}

没有多大意义,为什么不只是:

$('.checkbox input').on('change', function() {
    $(this).parent('.checkbox').toggleClass('checked', this.checked);
});

并且永远不要删除选中的属性,将其设置为 false.prop('checked', false);this.checked = false

于 2013-07-17T06:24:34.603 回答
0

尝试添加 $(this).parent().children('.btn-flat').addClass('grey');到 if 块和 $(this).parent().children('.btn-flat').removeClass('grey');javascript 的 else 块,然后添加 .checkbox .grey{background-color: #ccc;} 到 css 文件。这样,它针对特定的 html 元素。

于 2013-07-17T06:56:18.760 回答