隐藏预渲染的li标签

时间:2018-01-10 08:36:56

标签: javascript jquery html

我已经在我的页面中使用CheckboxSelectMultiple小部件呈现了一个Django表单字段,现在,在页面加载时,我想要隐藏所有未选中的复选框选项。我设法隐藏了复选框,但我不知道如何隐藏与复选框相关联的标签。我的问题是,我怎么能隐藏这个标签呢?下面是我的代码: model.py

class model_A(models.Model):
    user = models.ManyToManyField(User, blank=True)

form.py:

class EditForm(forms.ModelForm):
    prefix = 'edit_form'
    class Meta:
        model = model_A
        fields = '__all__'
        widgets = {'user':forms.CheckboxSelectMultiple}

html:

<div class="field">
    {{form.user}}
</div> 

javascript:

$('input[type=checkbox]:not(:checked)').hide();

在浏览器中的浏览页面源:

<ul id="id_settings-user">
    <li><label for="id_settings-user_1"><input type="checkbox" name="settings-user" value="1" id="id_settings-user_1" style="display: none;">
 Person A</label>
    </li>
    <li><label for="id_settings-user_2"><input type="checkbox" name="settings-user" value="2" id="id_settings-user_2" style="display: none;">
 Person B</label>
    </li>
    <li><label for="id_settings-user_3"><input type="checkbox" name="settings-user" value="3" id="id_settings-user_3" style="display: none;">
 Person C</label>
    </li>  
</ul>

1 个答案:

答案 0 :(得分:3)

您可以使用.parent() / .closest()定位标签然后隐藏。

for (var i = 0; i < items.length; i+) {
if(!currentItem){
    items[i].classList.remove('active');
}
}

$('input[type=checkbox]:not(:checked)').parent().hide();
$('input[type=checkbox]:not(:checked)').closest('label').hide();
$('input[type=checkbox]:not(:checked)').parent().hide();