使用JQuery向标签添加类

时间:2010-11-27 00:18:54

标签: jquery html css

我正在尝试使用jQuery在复选框的click事件的复选框标签上添加一个类。我在为ajax调用中的复选框检索HTML后调用以下函数。

function modDispTable() {
    $("#disptbl :input").each(function () {
        $(this).click(function () {
            var lblid = $(this).attr("id") + "_lbl";

            if ($(this).is(":checked")) {
                $(lblid).addClass('chksel');
            }
            else {
                $(lblid).removeClass('chksel');
            }
        });
    });
}

还有更多复选框,但所有复选框的结果HTML看起来与此类似:

<label id="chk_sobomnifeat_lbl" name="chk_sobomnifeat_lbl" for="chk_sobomnifeat" class="radiolbl chkmod chkmod1">
<input id="chk_sobomnifeat" name="chk_sobomnifeat" value="chk" type="checkbox">
Sobella Omni Feature Display
</label>

现在,我要做的就是应用不同的背景颜色。 CSS位于页面中包含的文件中。

.chksel {
    background-color: #D3CEBE;
}

我没有收到任何错误。在触发点击事件时,Firebug中的调试让我更加困惑,lblid包含正确的id值(标签),并且addClass行应该被执行。

有没有人有任何想法为什么课程不适用?我正在使用JQuery 1.4.4。

4 个答案:

答案 0 :(得分:5)

我认为您的ID字符串中缺少#

var lblid = "#" + $(this).attr("id") + "_lbl";

答案 1 :(得分:3)

您可能需要id选择器,如:

var lblid = "#" + $(this).attr("id") + "_lbl";

但即使是更酷的(因为你已经使用了正确的标记):

var label = $("[for=" + $(this).attr("id") + "]");

答案 2 :(得分:1)

尝试添加“#”:

var lblid = "#" + $(this).attr("id") + "_lbl";

答案 3 :(得分:1)

将选择器更改为$('#'+lblid)