Javascript 使用jQuery在最初和更改时对复选框执行一些操作

Javascript 使用jQuery在最初和更改时对复选框执行一些操作,javascript,jquery,Javascript,Jquery,我在表格中有一些复选框。选中这些字段后,将向表单中添加一个隐藏字段 最初选中了几个复选框,我不想修改HTML以包含相关的隐藏字段。相反,我希望能够触发相同的代码,在页面最初加载时自动添加隐藏字段 我试过这样的方法,但没有成功: container.find("input[data-subscribe]").on("change load", function() // ------------------------------------------------^^^^ Thought add

我在表格中有一些复选框。选中这些字段后,将向表单中添加一个隐藏字段

最初选中了几个复选框,我不想修改HTML以包含相关的隐藏字段。相反,我希望能够触发相同的代码,在页面最初加载时自动添加隐藏字段

我试过这样的方法,但没有成功:

container.find("input[data-subscribe]").on("change load", function()
// ------------------------------------------------^^^^ Thought adding load here
//                                                      might do what I want.
{
    var lists = $(this).data("subscribe").toString();
    lists = lists.split(";");

    for(var i = 0; i < lists.length; i++)
    {
        var list = lists[i];

        if($(this).is(":checked")) container.prepend('<input type="hidden" name="lists" value="' + list + '">');
        else container.find("input[type=hidden][value=" + list + "]").remove();
    }

});
container.find(“输入[数据订阅]”).on(“更改加载”,函数()
//------------------------------------------------------------^^^^^想在这里添加负载
//我想做什么就做什么。
{
var list=$(this.data(“subscribe”).toString();
lists=lists.split(“;”);
对于(变量i=0;i

当然,我可以复制代码并将其放入
$(document).ready()
处理程序中,但如果只有一个事件可以添加到上面的
上,那就更干净了。

将其包装在一个函数中,并从两个处理程序调用它:

function someCheckboxfunction(lists) {
    lists = lists.split(";");

    for(var i = 0; i < lists.length; i++)
    {
        var list = lists[i];

        if($(this).is(":checked")) {
            container.prepend('<input type="hidden" name="lists" value="' + list + '">');
        }
        else {
            container.find("input[type=hidden][value=" + list + "]").remove();
        }
    }
}

将其包装在函数中并从两个处理程序调用:

function someCheckboxfunction(lists) {
    lists = lists.split(";");

    for(var i = 0; i < lists.length; i++)
    {
        var list = lists[i];

        if($(this).is(":checked")) {
            container.prepend('<input type="hidden" name="lists" value="' + list + '">');
        }
        else {
            container.find("input[type=hidden][value=" + list + "]").remove();
        }
    }
}

在dom就绪时,只需触发更改事件

container.find("input[data-subscribe]").change()


在dom就绪时,只需触发更改事件

container.find("input[data-subscribe]").change()


您应该提取代码以将隐藏字段创建到函数中,而不仅仅是从
change
handler和
document调用该函数。ready
FYI:这背后的原因是复选框充当Taguchimail中列表的选项,集成需要这些隐藏字段来确定用户将添加到哪个列表中。@J0HN当然,但也不像我可以在这里添加相关事件那样简化。@MartyWallace:这是我最清楚的方式。为什么要让它复杂化呢?@MartyWallace有一天你可能会想在其他事件中添加这些隐藏项。或者在这些处理程序中有一点不同的逻辑。在这种情况下,分离事件处理程序和函数来完成实际工作将非常方便。因此,这是一个(1)明显的,(2)干净的,(3)可伸缩的方式来做到这一点。你有什么真正的理由以其他方式做这件事吗?:)您应该提取代码以将隐藏字段创建到函数中,而不仅仅是从
change
handler和
document调用该函数。ready
FYI:这背后的原因是复选框充当Taguchimail中列表的选项,集成需要这些隐藏字段来确定用户将添加到哪个列表中。@J0HN当然,但也不像我可以在这里添加相关事件那样简化。@MartyWallace:这是我最清楚的方式。为什么要让它复杂化呢?@MartyWallace有一天你可能会想在其他事件中添加这些隐藏项。或者在这些处理程序中有一点不同的逻辑。在这种情况下,分离事件处理程序和函数来完成实际工作将非常方便。因此,这是一个(1)明显的,(2)干净的,(3)可伸缩的方式来做到这一点。你有什么真正的理由以其他方式做这件事吗?:)可能想仔细看看你在这里做了什么。
$(此)
someCheckboxfunction
中指的是什么?而且我很确定最初的步骤只适用于一个复选框。你说得对,复制粘贴太多了。然而,既然你在质疑,我可以看出你理解了一般的概念。可能想仔细看看你在这里做了什么。
$(此)
someCheckboxfunction
中指的是什么?而且我很确定最初的步骤只适用于一个复选框。你说得对,复制粘贴太多了。然而,既然你在质疑它,我可以看出你理解一般的概念。