如果未选中复选框,我需要隐藏复选框及其标签。
// this works for checkboxes:
//$("input:checkbox").not(":checked").hide();
// ERROR: this hides all labels
$("input:checkbox").not(":checked").parent().find('label').hide();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="checkbox-inline" for="checkbox57ff95614668d">Sport</label>
<input class="" id="checkbox57ff95614668d" type="checkbox" name="userhobby[]" value="1" checked="">
<label class="checkbox-inline" for="checkbox57ff9561466d3">cinéma</label>
<input class="" id="checkbox57ff9561466d3" type="checkbox" name="userhobby[]" value="2" checked="">
<label class="checkbox-inline" for="checkbox57ff956146712">lecture</label>
<input class="" id="checkbox57ff956146712" type="checkbox" name="userhobby[]" value="3">
&#13;
答案 0 :(得分:3)
使用.prev()
选择元素的previus兄弟。您也可以使用:not()
selecot代替.not()
方法。
$("input:checkbox:not(:checked)").prev().hide();
$("input:checkbox:not(:checked)").hide().prev().hide();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="checkbox-inline" for="checkbox57ff95614668d">Sport</label>
<input class="" id="checkbox57ff95614668d" type="checkbox" name="userhobby[]" value="1" checked="">
<label class="checkbox-inline" for="checkbox57ff9561466d3">cinéma</label>
<input class="" id="checkbox57ff9561466d3" type="checkbox" name="userhobby[]" value="2" checked="">
<label class="checkbox-inline" for="checkbox57ff956146712">lecture</label>
<input class="" id="checkbox57ff956146712" type="checkbox" name="userhobby[]" value="3">
&#13;
如果label
不是input
的上一个兄弟,则可以使用Attribute Equals Selector [name=”value”]
选择目标标签。如您所知,输入的id
等于标签的for
属性。
$("input:checkbox:not(:checked)").each(function(){
$(this).hide().siblings("label[for='"+ this.id +"']").hide();
});
$("input:checkbox:not(:checked)").each(function(){
$(this).hide().siblings("label[for='"+ this.id +"']").hide();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="checkbox-inline" for="checkbox57ff95614668d">Sport</label>
<input class="" id="checkbox57ff95614668d" type="checkbox" name="userhobby[]" value="1" checked="">
<label class="checkbox-inline" for="checkbox57ff9561466d3">cinéma</label>
<input class="" id="checkbox57ff9561466d3" type="checkbox" name="userhobby[]" value="2" checked="">
<label class="checkbox-inline" for="checkbox57ff956146712">lecture</label>
<input class="" id="checkbox57ff956146712" type="checkbox" name="userhobby[]" value="3">
&#13;
答案 1 :(得分:2)
prev():获取匹配元素集中每个元素的前一个兄弟。如果提供了选择器,则仅当它与该选择器匹配时才会检索前一个兄弟。
您可以使用 prev()
通过将label
作为参数来选择之前的"label"
:
$('input:checkbox:not(:checked)').hide().prev('label').hide();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="checkbox-inline" for="checkbox57ff95614668d">Sport</label> <input class="" id="checkbox57ff95614668d" type="checkbox" name="userhobby[]" value="1" checked="">
<label class="checkbox-inline" for="checkbox57ff9561466d3">cinéma</label> <input class="" id="checkbox57ff9561466d3" type="checkbox" name="userhobby[]" value="2" checked="">
<label class="checkbox-inline" for="checkbox57ff956146712">lecture</label> <input class="" id="checkbox57ff956146712" type="checkbox" name="userhobby[]" value="3">
&#13;
希望这有帮助。
答案 2 :(得分:1)
您可以使用此功能。
使用此功能,标签所在的位置并不重要。唯一重要的是使用复选框上的id
属性和标签上的for
属性。
$(function() {
$('input:checkbox:not(:checked)').each(function() {
$(this).hide();
$('label[for='+$(this).attr('id')+']').hide();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="checkbox-inline" for="checkbox57ff95614668d">Sport</label>
<input class="" id="checkbox57ff95614668d" type="checkbox" name="userhobby[]" value="1" checked="">
<label class="checkbox-inline" for="checkbox57ff9561466d3">cinéma</label>
<input class="" id="checkbox57ff9561466d3" type="checkbox" name="userhobby[]" value="2" checked="">
<label class="checkbox-inline" for="checkbox57ff956146712">lecture</label>
<input class="" id="checkbox57ff956146712" type="checkbox" name="userhobby[]" value="3">
&#13;
答案 3 :(得分:1)
您可以使用复选框的ID来帮助过滤:
$('input:checkbox').not(':checked').each(function(i, el){
$(el).parent().find('label[for="' + el.id + '"]').hide();
});
或者,如果你想要更强大和结构独立的东西:
$('input:checkbox').not(':checked').each(function(i, el){
$('label[for="' + el.id + '"]').hide();
});