我正在尝试使用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。
答案 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)