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

时间:2019-01-22 09:59:40

标签: css html5

我正在服务器端(HTML代码)上编写一个stringbuilder,并通过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 个答案:

答案 0 :(得分:4)

您只需要更改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>

答案 1 :(得分:1)

按照下面的代码示例

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中的复选框后移动标签。

答案 2 :(得分:0)

尝试这种方式:

.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>