Как выбрать метку для отмеченного флажка с помощью CSS? - PullRequest
0 голосов
/ 22 января 2019

Я пишу строитель строк на сервере (HTML code) и отправляю 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 голосов
/ 22 января 2019

Ниже приведен пример кода

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.

0 голосов
/ 22 января 2019

Попробуйте следующим образом:

.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>
0 голосов
/ 22 января 2019

Вам нужно только изменить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...