当所有子复选框都选中/取消选中时,选中/取消选中主复选框

发布于 2024-12-12 04:54:58 字数 1124 浏览 0 评论 0原文

我目前正在向我的网站添加复选框并添加一些 jquery,以便当用户选中主题复选框时,它会检查所有子主题复选框。我已经使用下面的代码完成了这个工作。

我似乎无法开始工作的是,当用户选中所有子主题复选框时,它会检查主题复选框,而当用户取消选中子主题时,它会取消选中主题复选框。

任何帮助都会很棒

当前 jquery

$(document).ready(function () {
    $(".topic input").click(function () {
        $(this).parents("tr").find("input").prop('checked', (this.checked ? "checked" : ""));

    })

Html

<div class="topic">
     <input type="checkbox" name="topic" value="1">
     <span>Topic 1</span>
</div>

<div class="subtopic">
   <ul class="inputs-list">
      <li>
         <input type="checkbox" checked="" name="subtopic" value="1">
         <span>subtopic 1</span>
      </li>
      <li>
         <input type="checkbox" checked="" name="subtopic" value="2">
         <span>subtopic 2</span>
      </li>
      <li>
         <input type="checkbox" checked="" name="subtopic" value="3">
         <span>subtopic 3</span>
      </li>
    </ul>
</div>

I am currently working on adding checkboxes to my website and adding some jquery so when the user checks the topic checkbox, it checks all the subtopic checkboxes. I have got this to working using the code below.

What I can not seems to get to work is when the user checks all the subtopic checkboxes it checks the topic checkbox and when the user uncheck a subtopic it unchecks the topic checkbox.

Any help would be great

Current jquery

$(document).ready(function () {
    $(".topic input").click(function () {
        $(this).parents("tr").find("input").prop('checked', (this.checked ? "checked" : ""));

    })

Html

<div class="topic">
     <input type="checkbox" name="topic" value="1">
     <span>Topic 1</span>
</div>

<div class="subtopic">
   <ul class="inputs-list">
      <li>
         <input type="checkbox" checked="" name="subtopic" value="1">
         <span>subtopic 1</span>
      </li>
      <li>
         <input type="checkbox" checked="" name="subtopic" value="2">
         <span>subtopic 2</span>
      </li>
      <li>
         <input type="checkbox" checked="" name="subtopic" value="3">
         <span>subtopic 3</span>
      </li>
    </ul>
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三生一梦 2024-12-19 04:54:58
$(document).ready(function () {

    $(".topic input[type='checkbox']").click(function(){
        var is_checked=$(this).is(":checked");
        $(".inputs-list").find('input').prop("checked",is_checked);
    });
    $(".inputs-list > li > input[type='checkbox']").click(function() {
        is_checked=$(this).is(":checked");
        $(".topic input[type='checkbox']").prop("checked",(!is_checked)?is_checked:true);
    });
});

<div class="topic">
         <input type="checkbox" name="topic"  class="topic" value="1">
         <span>Topic 1</span>
        </div>

    <div class="subtopic">
       <ul class="inputs-list">
          <li>
             <input type="checkbox"  name="subtopic" value="1">
             <span>subtopic 1</span>
          </li>
          <li>
             <input type="checkbox"  name="subtopic" value="2">
             <span>subtopic 2</span>
          </li>
          <li>
             <input type="checkbox"  name="subtopic" value="3">
             <span>subtopic 3</span>
          </li>
        </ul>
    </div>
$(document).ready(function () {

    $(".topic input[type='checkbox']").click(function(){
        var is_checked=$(this).is(":checked");
        $(".inputs-list").find('input').prop("checked",is_checked);
    });
    $(".inputs-list > li > input[type='checkbox']").click(function() {
        is_checked=$(this).is(":checked");
        $(".topic input[type='checkbox']").prop("checked",(!is_checked)?is_checked:true);
    });
});

<div class="topic">
         <input type="checkbox" name="topic"  class="topic" value="1">
         <span>Topic 1</span>
        </div>

    <div class="subtopic">
       <ul class="inputs-list">
          <li>
             <input type="checkbox"  name="subtopic" value="1">
             <span>subtopic 1</span>
          </li>
          <li>
             <input type="checkbox"  name="subtopic" value="2">
             <span>subtopic 2</span>
          </li>
          <li>
             <input type="checkbox"  name="subtopic" value="3">
             <span>subtopic 3</span>
          </li>
        </ul>
    </div>
卷耳 2024-12-19 04:54:58

因此,您有两个事件:

  1. 如果检查了主题,则将检查添加到子主题
  2. 如果检查了子主题,则从主题中删除检查

    $(文档).ready(function () {
        $(".topic input[type='checkbox']").click(function() {
            var context = $(this).parents("tr");
            $(".subtopic input[type='checkbox']").attr("已选中", "已选中");
        });
        $(".subtopic input[type='checkbox']").click(function() {
            var context = $(this).parents("tr");
            $(".topic input[type='checkbox']").removeAttr("checked");
        });
    });
    

So you have two events:

  1. add checked to the subtopic's if topic is checked
  2. remove checked from topic if subtopic is checked

    $(document).ready(function () {
        $(".topic input[type='checkbox']").click(function() {
            var context = $(this).parents("tr");
            $(".subtopic input[type='checkbox']").attr("checked", "checked");
        });
        $(".subtopic input[type='checkbox']").click(function() {
            var context = $(this).parents("tr");
            $(".topic input[type='checkbox']").removeAttr("checked");
        });
    });
    
ㄖ落Θ余辉 2024-12-19 04:54:58

第一个更改事件处理程序用于主题选择,第二个更改用于子主题取消选中

$(document).ready(function(){
    $("[name='topic']").change(function(){
    if($(this).attr("checked") == "checked")
    {
        $("[name='subtopic']").attr("checked",true);
    }
    else
    {
        $("[name='subtopic']").attr("checked",false);
    }
});
    $("[name='subtopic']").change(function(){
        if($("[name='subtopic']:checked").length == 0)
    {
        $("[name='topic']").attr("checked",false);
    }
});
});

The first change event handler for the topic select and the second change is for the subtopic uncheck

$(document).ready(function(){
    $("[name='topic']").change(function(){
    if($(this).attr("checked") == "checked")
    {
        $("[name='subtopic']").attr("checked",true);
    }
    else
    {
        $("[name='subtopic']").attr("checked",false);
    }
});
    $("[name='subtopic']").change(function(){
        if($("[name='subtopic']:checked").length == 0)
    {
        $("[name='topic']").attr("checked",false);
    }
});
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文