代码之家  ›  专栏  ›  技术社区  ›  dllhell Ajay

如何使用CSS选择选中复选框的标签?

  •  1
  • dllhell Ajay  · 技术社区  · 6 年前

    我正在服务器端编写一个StringBuilder(HTML代码),通过Ajax向jQuery函数发送响应,将这个HTML放到适当的位置。在服务器端决定选中哪个复选框。到现在为止,一直都还不错。

    我想为选中的复选框选择标签并更改颜色,这样选中的国家会有不同的颜色。我的问题是我不能选择所需的标签和更改颜色属性。我试过这个,你看到的,当然是用类和 + > :before 还有其他奇怪的事情…

    那么,如何选择它们并更改标签上的任何属性呢?

    我想用CSS来完成它,我知道如何使用jquery来完成它,但它似乎是错误的。

    label + input.chkCountry[type="checkbox"]:checked  {color:green;}
    <ul class="chkbox">
      <li><label class="lblCountry" for="chkCC_AF"><input type="checkbox" class="chkCountry" id="chkCC_AF" name="chk_AF" value="AF" checked="checked">Afghanistan</label></li>
      <li><label class="lblCountry" for="chkCC_AL"><input type="checkbox" class="chkCountry" id="chkCC_AL" name="chk_AL" value="AL">Albania</label></li>
      <li><label class="lblCountry" for="chkCC_DZ"><input type="checkbox" class="chkCountry" id="chkCC_DZ" name="chk_DZ" value="DZ">Algeria</label></li>
      <li><label class="lblCountry" for="chkCC_AS"><input type="checkbox" class="chkCountry" id="chkCC_AS" name="chk_AS" value="AS">American Samoa</label></li>
    </ul>
    3 回复  |  直到 6 年前
        1
  •  4
  •   SuperDJ Franklin Rivero    6 年前

    您只需要更改HTML和选择器。在CSS中,标签不知道是否选中了复选框,因此您必须将其转过来。在HTML中 input 不应该在 label 元素。

    input.chkCountry[type="checkbox"]:checked + label  {color:green;}
    /*input:checked + label  {color:green;} /* Short selector */
    <ul class="chkbox">
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_AF" name="chk_AF" value="AF" checked="checked">   
        <label class="lblCountry" for="chkCC_AF">Afghanistan</label>
      </li>
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_AL" name="chk_AL" value="AL">
        <label class="lblCountry" for="chkCC_AL">Albania</label>
      </li>
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_DZ" name="chk_DZ" value="DZ">
        <label class="lblCountry" for="chkCC_DZ">Algeria</label>
      </li>
        <li><input type="checkbox" class="chkCountry" id="chkCC_AS" name="chk_AS" value="AS">
        <label class="lblCountry" for="chkCC_AS">American Samoa</label>
      </li>
    </ul>
        2
  •  1
  •   Daut Łukasz Blaszyński    6 年前

    遵循下面的代码示例

    input[type="checkbox"]:checked ~ label {
        color: green;
    }
    <ul class="chkbox">
      <li>
        <input type="checkbox" id="chkCC_AF" name="chk_AF" value="AF" checked="checked">
        <label class="lblCountry" for="chkCC_AF">Afghanistan</label>
      </li>
      <li>
        <input type="checkbox" id="chkCC_AL" name="chk_AL" value="AL">
        <label class="lblCountry" for="chkCC_AL">Albania</label>
      </li>
    </ul>

    您需要在HTML中的复选框后移动标签。

        3
  •  0
  •   Partho63 BASANT KUMAR    6 年前

    尝试这种方式:

    .chkCountry:checked + .lblCountry {
      color: green;
    }
    <ul class="chkbox">
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_AF" name="chk_AF" value="AF" checked="checked">
        <label class="lblCountry" for="chkCC_AF">Afghanistan</label>
      </li>
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_AL" name="chk_AL" value="AL">
        <label class="lblCountry" for="chkCC_AL">Albania</label></li>
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_DZ" name="chk_DZ" value="DZ">
        <label class="lblCountry" for="chkCC_DZ">Algeria</label></li>
      <li>
        <input type="checkbox" class="chkCountry" id="chkCC_AS" name="chk_AS" value="AS">
        <label class="lblCountry" for="chkCC_AS">AAmerican Samoa</label></li>
    </ul>
    推荐文章