jQuery切换元素(如果存在其他元素)

时间:2020-01-21 12:20:52

标签: javascript jquery html

编辑 我无权访问原始HTML。我只能将jQuery添加到页面中。

我试图根据是否存在另一个元素(div)来动态地显示/隐藏页面上的元素(div)。 我在页面上有一个复选框,单击该复选框即可添加一个类。

这里的代码就是我想要的。但是,当.is-checked存在时,它只是隐藏该元素。它不会再次切换回去。

$( document ).ready(function() {
if($('.is-checked').length){
   $('.fn_container_start').hide();
}
});

我已经有一个复选框,其中包含一个名为.selectit的类,当您单击它时,将附加一个名为.is-checked的类

我希望将.is-checked附加到页面上以隐藏类.fn_container_start

但是当页面上没有.is-checked时,也应该再次隐藏.fn_container_start类。

这是单击前后的复选框的html

在单击复选框之前

<label class="selectit"><input value="157" type="checkbox" name="download_category[]" id="in-download_category-157"> Brushes</label>

之后

<label class="selectit is-checked"><input value="157" type="checkbox" name="download_category[]" id="in-download_category-157"> Brushes</label>

这可能吗?

谢谢

莫顿

5 个答案:

答案 0 :(得分:3)

function valueChanged(){
    if($('.toggle_check').is(":checked"))   {
        $('.fn_container_start').hide();
        $('.toggle_check').addClass('is-checked');
        }
    else{
        $('.fn_container_start').show();
        $('.toggle_check').removeClass('is-checked');
        }

}
<label class="selectit"><input value="157" type="checkbox" class="toggle_check" name="download_category" id="in-download_category-157" onchange="valueChanged();"> Brushes</label>
<div class="fn_container_start">
  <p class="hide">div hides if the checkbox checked</p>
</div>


<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
   

答案 1 :(得分:1)

我认为您可以使用.hasClass方法

$( document ).ready(function() {
 $("#in-download_category-157").click(function() {
    $(".selectit").toggleClass("is-checked");
        if($('.selectit').hasClass('is-checked')){
            $('.fn_container_start').hide();
        }else{
            $('.fn_container_start').show();
        }
  });
});

答案 2 :(得分:0)

使用此代码

 <script type="text/javascript">
        $(document).ready(function() {

        $('input[type="checkbox"]').click(function() {

             $(".selectit").addClass("is-checked");

      });

    });
    </script>

答案 3 :(得分:0)

$( document ).ready(function() {
    $('.selectit').on('click', function(){
        $('.fn_container_start').toggleClass("hidden");
    });
});
.hidden{display:none !important;}
.fn_container_start{border:1px dashed red;}
<label class="selectit"><input value="157" type="checkbox" name="download_category[]" id="in-download_category-157"> Brushes</label>

<div class="fn_container_start">This div have .fn_container_start class</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

答案 4 :(得分:0)

$('.selectit input.toggle_check').on('change',function(){
    if($(this).is(":checked"))   {
        $('.fn_container_start').hide();
        $(this).addClass('is-checked');
        }
    else{
        $('.fn_container_start').show();
        $(this).removeClass('is-checked');
        }

})
<label class="selectit"><input value="157" type="checkbox" class="toggle_check" name="download_category" id="in-download_category-157"> Brushes</label>
<div class="fn_container_start">
  <p class="hide">div hides if the checkbox checked</p>
</div>


<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>