根据复选框JQuery设置标签的值

时间:2013-07-25 18:59:48

标签: jquery attr

我只是想根据复选框的change()事件设置标签值。我的复选框和标签代码是;

<div class="Sell" style="width: 47px;"><input type="checkbox" id="chkSell" class="_1"/></div>
<div class="BuySelllbl" style="width: 10px;"><label id="lblBuySell_1"></label></div>

和JQuery如下;

    $("#chkSell").live('change',function(){
    var y = $(this).attr("class");
    var x = "#lblBuySell" + y;  
    alert(x);
    if(this.checked){       
        $(x).attr("value","S");
        $(x).attr("style","color: red;");
    }else{
        $(x).removeAttr("value");
    }
});

警报每次都会输出标签的正确ID,但在.attr属性中没有设置任何内容。我的语法有什么不对吗?任何帮助都很棒。 谢谢, NickG

3 个答案:

答案 0 :(得分:1)

您需要更改验证复选框已选中的方式。

// First method - Recommended
$('#checkbox').prop('checked')  // Boolean true

// Second method - Makes code more readable (e.g. in if statements)
$('#checkbox').is(':checked')  // Boolean true

// Third method - Selecting the checkbox & filtering by :checked selector
$('#checkbox:checked').length  // Integer >0
$('#checkbox:checked').size()  // .size() can be used instead of .length

// Fourth method - Getting DOM object reference
$('#checkbox').get(0).checked  // Boolean true
$('#checkbox')[0].checked      // Boolean true (same as above)

答案 1 :(得分:1)

属性值没有label的任何值,您应该将语句替换为:

$("#chkSell").live('change',function(){
    var y = $(this).attr("class");
    var x = "#lblBuySell" + y;  
    alert(x);
    if(this.checked){       
        $(x).html("S");
        $(x).attr("style","color: red;");
    }else{
        $(x).removeAttr("value");
    }

答案 2 :(得分:0)

$("#chkSell").live('change',function(){
    var x = $("#lblBuySell." + $(this).attr("class"));  

    if(this.checked == true)
    {
        x.attr("value","S");
        x.attr("style","color: red;");
    }
    else
        x.removeAttr("value");
});

您可以使用长度变量

检查是否未选择任何元素
x.length