javascript - 如何使用 jQuery 访问存储在数组中的元素?

标签 javascript jquery html arrays forms

我正在构建一个 HTML 表单,对于其中的一个部分,需要将 div 内的一组 HTML 输入字段推送到一个数组中。 div 和所有字段在创建时都会获得唯一的 id/名称 - 特别是,输入之一是选择。

所有这些工作正常 - 字段已创建并推送到数组,所有内容都正确标识,等等,但我似乎无法访问应该稍后出现的 jQuery 更改函数的选择元素,在创建字段之后。我测试了一个内联 Javascript“onchange = myFunction()”类型的东西,这能够访问 select 元素 - 我明白为什么这有效,但这不会是一个可接受的解决方案...我真的需要使用 $ ("#id").更改函数。

如何使用 jQuery 访问存储在数组中的选择元素?

 this['input_array' + siteName] = [];

 for (y = 0; y < numberFound; y++){
 this['input_array' + siteName].push('<div id="'+routeValue+''+siteName+'Details'+y+'" class="details">Species: <select id="'+siteName+'Species'+y+'" name="species['+y+']" data-speciesNumber="'+y+'">'+speciesList+'</select></div>);

     $("#"+siteName+"Species"+y+"").change(function(){
       species = this.value;
       speciesNumber = this.getAttribute("data-speciesNumber");
       siteSpeciesNumber = displayName + "" + species + "" + speciesNumber;
       document.getElementById(""+siteName+"compileField"+speciesNumber+"").value = siteSpeciesNumber;
       });

      };

      $("#"+routeValue+""+siteName+"Details").append(this['input_array' + siteName]);

最佳答案

问题不在于选择位于数组内,而在于它尚未附加到 DOM。

尝试将事件处理程序作为元素的一部分附加。现在,当 jQuery 将元素插入到文档中时,就会注册事件绑定(bind)。

function $newSelect(y) {
    return $('<select />', {
        html: speciesList,
        id: siteName + 'Species' + y,
        name: 'species[' + y + ']',
        data: {
            speciesNumber: y
        },
        on: {
            change: function(){
                species = this.value;
                speciesNumber = this.getAttribute("data-speciesNumber");
                siteSpeciesNumber = displayName + "" + species + "" + speciesNumber;
                document.getElementById(""+siteName+"compileField"+speciesNumber+"").value = siteSpeciesNumber;
            }
        }
    }
}
function $newField (idNum) {
    return $("<div id="'+routeValue+''+siteName+'Details'+y+'" class="details"></div>", {
        html: $newSelect(idNum)
    });
}
this['input_array' + siteName] = [];

for (y = 0; y < numberFound; y++){
    this['input_array' + siteName].push($newField(y));
};

  $("#"+routeValue+""+siteName+"Details").append(this['input_array' + siteName]);

关于javascript - 如何使用 jQuery 访问存储在数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705033/

相关文章:

javascript - 使用 Angular、未定义服务读取 JSON

javascript - 如何在单击时将 CSS 中定义的动画应用于类?

javascript - 内联显示表单元素

javascript - 为什么 jQuery animate 将我的 div 设置为显示 : none?

javascript - 使用 JSTL 将对象设置为表格行

html - 如何在执行 float :right. 后垂直显示列表 How can I display the list vertically after float:right

javascript - 更改时渲染图像

javascript - 获取另一个数组下的数组名

javascript - 从frame1中的按钮设置frame2的帧源?

html - 为什么 Firefox 和 Chrome 以不同方式显示此图像?