14

当我在表单(Bootstrap v3)中选择一个复选框时,我正在尝试添加删除线。我对这个bootply 进行了编码:

<div class="form-group ">
    <label for="inputName" class="col-md-1 control-label">select</label>  
    <div class="col-md-5">
        <div class="checkbox">
             <label><input type="checkbox" name="packersOff" class="strikethrough" value="1">sssssssss</label>
        </div>
     </div>
</div>

并在css中添加了一个类

.strikethrough:checked{
  text-decoration:line-through;
}

但它不起作用..

4

6 回答 6

17

这是在检查您的输入时删除的解决方案:

input[type=checkbox]:checked + label.strikethrough{
  text-decoration: line-through;
}
<div class="form-group ">
    <label for="inputName" class="col-md-1 control-label">select</label>  
    <div class="col-md-5">
        <div class="checkbox">
            <input type="checkbox" name="packersOff" id="packers" value="1"/>
            <label for="packers" class="strikethrough">sssssssss</label>
        </div>
     </div>
</div>

JSFIDDLE

有了这个解决方案,当复选框被选中时,它会对标签做一些事情。因此,您可以根据需要将其设置为粗体或更改其颜色。

于 2015-06-22T08:57:32.607 回答
6

问题是您试图line-through在文本位于标签内的复选框上应用。您可以将文本包装在 a 中<span>并在其上更改其 CSS:checked

<div class="checkbox">
   <label>
      <input type="checkbox" name="packersOff" class="strikethrough" value="1">
      <span>sssssssss</span>
   </label>
</div>




.strikethrough:checked + span{
  text-decoration:line-through
}

引导层

于 2015-06-22T08:53:20.773 回答
1

.strikethrough:checked + .strikeThis {
  text-decoration: line-through
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<div class="form-group ">
  <label for="inputName" class="col-md-1 control-label">select</label>
  <div class="col-md-5">
   
      <input name="packersOff" class="strikethrough" value="1" type="checkbox">
      <label for="packersOff" class="strikeThis">sssssssss</label>
    
  </div>
</div>

于 2015-06-22T08:54:42.960 回答
1

:checkedCSS 伪类选择器代表任何已选中或切换到开启状态的单选( <input type="radio">)、复选框 ( <input type="checkbox">) 或选项 (<option> 在 a 中) 元素。<select>用户可以通过单击元素或选择不同的值来更改此状态,在这种情况下 :checked 伪类不再适用于该元素,但将适用于相关元素。

来源:https ://developer.mozilla.org/en-US/docs/Web/CSS/%3Achecked

为了使其正常工作,请将您的 HTML 重新排列为:

<div class="form-group ">
    <label for="inputName" class="col-md-1 control-label">select</label>  
    <div class="col-md-5">
        <div class="checkbox">
          <input name="packersOff" class="strikethrough" value="1" type="checkbox">
          <label for="packersOff">sssssssss</label>
        </div>
     </div>
</div>

和你的CSS:

.strikethrough:checked + label {
  text-decoration:line-through
}

演示

于 2015-06-22T08:55:00.750 回答
0

jQuery解决方案:

$('#packersOff').change(function() {
  if ($('#packersOff').prop('checked') ) {
    $('#test').css('text-decoration','line-through');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group ">
	<label for="inputName" class="col-md-1 control-label">select</label>  
    <div class="col-md-5">
		<div class="checkbox">
            <label for="packersOff" id="test">sssssssss</label>
            <input type="checkbox" name="packersOff" id="packersOff" class="strikethrough" value="1" />
        </div>
     </div>
</div>

于 2015-06-22T08:59:21.363 回答
-1

这对我有用。

li.my-item:hover span { visibility: visible; }
li.my-item span { visibility:hidden; }
于 2017-07-17T06:15:28.303 回答