关于使用jquery动态生成复选框的父/子关系的问题

关于使用jquery动态生成复选框的父/子关系的问题,jquery,checkbox,parent-child,onload,Jquery,Checkbox,Parent Child,Onload,我有一种基于用户内容动态生成的复选框形式。复选框的各个部分按类别划分,每个类别中都有项目。出于数据库目的,类别值具有隐藏的复选框。如果类别中的子项具有选中的复选框,则也会选中类别复选框 我使用JQuery.click()可以正常工作,但我不知道如何在页面加载时执行此操作 以下是实际单击复选框时的代码: $(".project").click(function() { if($(this).is(":checked") && $(this).hasClass("proje

我有一种基于用户内容动态生成的复选框形式。复选框的各个部分按类别划分,每个类别中都有项目。出于数据库目的,类别值具有隐藏的复选框。如果类别中的子项具有选中的复选框,则也会选中类别复选框

我使用JQuery.click()可以正常工作,但我不知道如何在页面加载时执行此操作

以下是实际单击复选框时的代码:

$(".project").click(function() {

    if($(this).is(":checked") && $(this).hasClass("project")) {
       $(this).parent().parent().children(':first').attr('checked', true);

    }else if(!$(this).parent().children('.project').is(":checked")){
        $(this).parent().parent().children(':first').attr('checked', false);

    }
 });
现在,当我编辑这些框的状态时(意味着它们保存到db后),类别框不会显示为选中状态,即使它们的子项目已选中。如果选中了类别的子项,我可以如何做才能使我的类别框在加载时被选中

我认为问题的一部分在于动态更改的父子设置,如何找到父框以便选中它?谢谢

编辑:

假设父元素有一个唯一的类

<div class="parent">
    <input type="checkbox" />
    <div>
        <input type="checkbox" class="project" checked="checked" />
    </div>
    <div>
        <input type="checkbox" class="project" />
    </div>
</div>
这将返回
.parent
元素,这些元素至少有一个子元素具有类
项目
,并且被选中

的文档:具有选择器


如果要在页面加载时运行
单击
处理程序,可以手动触发它

$(".project").click(function() {

    if($(this).is(":checked") && $(this).hasClass("project")) {
       $(this).parent().parent().children(':first').attr('checked', true);

    }else if(!$(this).parent().children('.project').is(":checked")){
        $(this).parent().parent().children(':first').attr('checked', false);

    }
 });

$('.project').click();  // Triggers the click event handler 
这是以下的简写:

$('.project').trigger('click');  // Accomplishes the same as above

我建议您使用绑定触发器的方法,它旨在将绑定应用于动态创建的元素。

@Ghommey-真的吗?如果是的话,没有。是的,你做到了。只需阅读我的代码,上面写着
。单击()
。。你在2分钟后发布了答案,给出了相同的解决方案。@Ghommey-放下妄想症。你的肯定是第一名。这只是意味着我在回答我的问题,而你在提交你的问题。当我开始时,没有答案。两个人想出相同的解决方案并不罕见(信不信由你)。我绝对不需要复制你的答案来获得一个非常简单的解决方案。@Ghommey-等等!让我先复印一下;o) @Jeff-这将有助于查看您的HTML结构。可能有一个很好的解决方案,它不需要触发更多的事件。
$('.project').trigger('click');  // Accomplishes the same as above