-1

我发现了很多这样的例子,但没有一个完全符合我在一个掘金中尝试做的事情。我需要更改复选框或收音机的标签(标签必须包裹在我喜欢的输入的输入周围),具体取决于复选框或收音机是否被“选中”。其中一些输入将在到达表格时被检查,因此如果选中,班级需要在到达时显示。

它现在适用于复选框,但是如何在不破坏它的情况下将单选按钮添加到组合中?感谢帮助!

这是我的 HTML/CSS:

<style type="text/css">
.c_on {color: #F0F;}
.r_on {color: #0F0;}
</style>

<fieldset class="checkboxes">

    <label for="chk1"><input type="checkbox" id="chk1" />chk1</label><br />
    <label for="chk2"><input type="checkbox" id="chk2" checked="checked" />chk2</label>

</fieldset>

<fieldset class="radios">

    <label for="rdo1"><input type="radio" name="group1" id="rdo1" />rdo1</label><br />
    <label for="rdo2"><input type="radio" name="group1" id="rdo2" checked="checked" />rdo2</label>

</fieldset>

这是我的 jQuery:

$(document).ready(function() {

    /* Turn checkbox class on */
    var checkOn = 'c_on'

    function toggleLabelClass(input){
        var $input = $(input);
        if ($input.is('[type="checkbox"]:checked')){
            $input.parent('label').addClass(checkOn);
        }else{
            $input.parent('label').removeClass(checkOn)
        }
    }
    $(function() {
        $('input[type="checkbox"]').each(function(){
            toggleLabelClass(this);
            $(this).click(function(evt){
                toggleLabelClass(evt.target);
            });
        });
    });

});

http://jsfiddle.net/P2n2V/

4

2 回答 2

1

也许这样的事情会起作用:

$(function() {
    var inputOn = 'c_on',
        radioOn = 'r_on',
        elms=$('input[type="checkbox"], input[type="radio"]');

    function setLabelClass() {
        elms.each(function(i,e) {
            $(e).parent('label')[e.checked?'addClass':'removeClass']($(e).is(':radio')?radioOn:inputOn);
        });
    }

    elms.on('change', setLabelClass);
    setLabelClass();
});​

小提琴

于 2012-08-04T20:50:10.013 回答
0

您需要在each()循环中添加无线电输入并对函数进行一些更改toggleLabelClass()。这是你需要的吗:http: //jsfiddle.net/zjc9e/

我不知道你所说的不打破混合是什么意思。您不想更改代码的任何部分吗?

于 2012-08-04T20:41:46.867 回答