簡體   English   中英

如何使用jQuery訪問存儲在數組中的元素?

[英]How can I use jQuery to access an element that's stored in an array?

我正在構建HTML表單,對於其中的一部分,需要將div內的一簇HTML輸入字段推入數組。 div和所有字段在創建時都會獲得唯一的ID /名稱-特別是選擇之一就是輸入。

所有這些工作都很好-創建了字段並將其推送到數組,正確設置了所有內容,等等,但是我似乎無法訪問jQuery更改函數的select元素,該元素應該稍后在字段已創建。 我測試了一個內聯Javascript“ onchange = myFunction()”類型的東西,它能夠訪問select元素-我知道為什么它起作用,但是這不是一個可以接受的解決方案...我真的需要使用$ (“ #id”)。change函數。

如何使用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將元素插入文檔中時,將注冊事件綁定。

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]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM