0

我只是想根据复选框的 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 属性中没有设置任何内容。我的语法有什么不正确的地方吗?任何帮助都很棒。谢谢你,尼克

4

3 回答 3

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)
于 2013-07-25T19:02:14.967 回答
1

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

$("#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");
    }
于 2013-07-25T19:04:00.783 回答
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
于 2013-07-25T19:04:02.067 回答