Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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
当JavaScript生成的复选框发生更改时运行函数_Javascript_Jquery_Html_Checkbox - Fatal编程技术网

当JavaScript生成的复选框发生更改时运行函数

当JavaScript生成的复选框发生更改时运行函数,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,我正在创建一个网页,并基于CSV文件填充该网页中的值 根据CSV文件中的列数,我希望生成带有这些值的复选框列表。我的工作是: function updateKey() { var key = ''; for (var item in data[0]) { key += '<input type="checkbox" name="' + item + '" value="' + item +'"> ' key += item +

我正在创建一个网页,并基于CSV文件填充该网页中的值

根据CSV文件中的列数,我希望生成带有这些值的复选框列表。我的工作是:

function updateKey() {
    var key = '';
    for (var item in data[0])
    {
        key += '<input type="checkbox" name="' + item + '" value="' + item +'"> '
        key += item + "<br>\r\n"
    }
    document.getElementById('key').innerHTML = key
}
但是,当我选中复选框时,它似乎不会触发。我在
push
功能之后添加了一个警报窗口,但似乎什么也没有发生。是否因为这些复选框是在页面加载后生成的?有没有办法监听这些动态创建的复选框?

看看.on()函数。添加更改事件后,必须将其绑定到所有生成的复选框。您发布的示例只有在单独调用时才会触发(在按钮处理程序上)

例如:

var selected = [];

function updateKey() {
    var key = '';
    for (var item in data[0])
    {
        key += '<input type="checkbox" name="' + item + '" value="' + item +'">'
        key += item + "<br>\r\n"
    }
    document.getElementById('key').innerHTML = key

    $('#key input[type="checkbox"]').change(function () {
        // your stuff
    });
}
var selected=[];
函数updateKey(){
var键=“”;
对于(数据[0]中的var项)
{
键+=''
键+=项+“
\r\n” } document.getElementById('key')。innerHTML=key $('#键输入[type=“checkbox”]')。更改(函数(){ //你的东西 }); }

更改处理程序的其他信息:

您正在寻找的是一个简单的事件绑定

您可能遇到的唯一一个小问题是,您的元素是动态创建的,因此您必须在创建它们时为每个元素单独附加一个事件(不要这样做),或者可以使用所谓的

我们没有将事件绑定到元素本身,而是将侦听器放在其容器上。这个监听器将处理所有的复选框

基本示例如下所示:

$(“#键”)。在('change','input[type=checkbox]'上,函数(){
所选var=[];
$('#键输入[type=“checkbox”]:选中”)。每个(函数(){
选中.push($(this.attr('name'));
});
console.log(选中);
})
$(“#键”)。追加(“”);
$(“#键”)。追加(“”)

选中下面的复选框。

您正在寻找委托事件处理程序<代码>$(文档)。在('change'、'#key input[type=checkbox]'上,function(){//其中一个复选框已更改})
-您可以使用
$(this)
捕获此函数中更改的复选框。桑蒂,这很有效!如果你把它变成一个帖子,我会给你答案:)我想你得出的结论和我的一样。对吗?我需要将其附加到包含的div?不,您将直接将处理程序附加到复选框。谢谢!我在搜索时也得到了类似的答案,但直到你的帖子发布后才有意义。
var selected = [];

function updateKey() {
    var key = '';
    for (var item in data[0])
    {
        key += '<input type="checkbox" name="' + item + '" value="' + item +'">'
        key += item + "<br>\r\n"
    }
    document.getElementById('key').innerHTML = key

    $('#key input[type="checkbox"]').change(function () {
        // your stuff
    });
}