将类添加到默认选中的复选框和广播的标签

时间:2012-08-04 20:32:27

标签: jquery css forms

我已经找到了很多这方面的例子,但没有一个与我在一个金块中尝试做的完全相同。我需要更改复选框或收音机的标签(标签必须缠绕在我的花式输入的输入上),具体取决于是否选中了复选框或收音机。"其中一些输入将在到达表格时进行检查,因此如果选中,则需要在抵达时显示。

它现在正在使用复选框,但是如何在不破坏它的情况下将混音按钮添加到混音中?感谢帮助!

这是我的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/

2 个答案:

答案 0 :(得分: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();
});​

FIDDLE

答案 1 :(得分:0)

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

我不确定你打破混音是什么意思。你不想改变代码的任何部分吗?