Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据复选框的值创建jquery事件?_Jquery - Fatal编程技术网

如何根据复选框的值创建jquery事件?

如何根据复选框的值创建jquery事件?,jquery,Jquery,基本上,我有一个默认情况下需要隐藏的复选框列表,如果主复选框可见,则显示它们 <div class="parent"> <input type="checkbox" class="subjectChk"> <div class="childCont"> <input type="checkbox" class="subjGradeChk hidden"> </div> </div>

基本上,我有一个默认情况下需要隐藏的复选框列表,如果主复选框可见,则显示它们

<div class="parent"> 
    <input type="checkbox" class="subjectChk"> 
    <div class="childCont">
        <input type="checkbox" class="subjGradeChk hidden">
    </div>
</div>
<div class="parent"> 
    <input type="checkbox" class="subjectChk"> 
    <div class="childCont">
        <input type="checkbox" class="subjGradeChk hidden">
    </div>
</div>

但我希望它只影响基于父级的每个实例,事件将如下所示:

$('.subjGradeChk').on('click',function(){
    if(this.checked){
        $(this).removeClass('hidden');
    }
});

this.checked
是vanilla JS,但在这种情况下,vanilla JS非常有效。而且它的装载速度更快D

我建议,最简单的做法是:

// binds the 'change' event-handler to all elements with that class:
$('.subjectChk').change(function(){
    /* selects the closest '.parent' element from the changed element,
       finds the '.subjGradeChk' element(s) within that parent,
       if the changed element is 'checked' we use the removeClass() method,
       otherwise the addClass() method to change the '.hidden' class: */
    $(this).closest('.parent').find('.subjGradeChk')[this.checked ? 'removeClass' : 'addClass']('hidden');
// we trigger the 'change' event:
}).change();

参考资料:

    • 使用此

      if($('.subjectChk').attr('checked')){
       $('.subjectChk').next().show();` 
      }else{
       $('.subjectChk').next().hide();   
      

      }`

      您尝试过什么吗?是的,类似于$('.subgradechk').on('click',function(){if(this.checked){$(.subgradechk.removeClass('hidden');}});唯一的问题是它会影响所有的CHK输入。。。我希望它是基于一位家长的想法……我很高兴能帮上忙!:d您应该使用
      prop()
      作为选中的
      属性(而不是
      attr()
      )。此外,我不确定OP是否要隐藏或显示下一个(
      div
      元素,或该元素的子复选框)。
      if($('.subjectChk').attr('checked')){
       $('.subjectChk').next().show();` 
      }else{
       $('.subjectChk').next().hide();