代码之家  ›  专栏  ›  技术社区  ›  Buggabill

使用JQuery向标签添加类

  •  0
  • Buggabill  · 技术社区  · 14 年前

    我正试图用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 回复  |  直到 14 年前
        1
  •  5
  •   Chris    14 年前

    我想你错过了 # 在你的身份证上。

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

        2
  •  3
  •   Daff    14 年前

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

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

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

    var label = $("[for=" + $(this).attr("id") + "]");
    
        3
  •  1
  •   dubrox    14 年前

    尝试添加“35;”:

    var lblid = "#" + $(this).attr("id") + "_lbl";
    
        4
  •  1
  •   Gabriele Petrioli    14 年前

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