我试图推送所有以特定ID或名称开头的选择元素,并尝试了以下操作,但似乎不起作用:
var IDs = [];
$("#dynamic_field [id^='product_id']").find("select").each(function(){ IDs.push(this.id); });
alert(IDs.length);
如果我不指定特定的选择ID或名称,它会起作用:
var IDs = [];
$("#dynamic_field").find("select").each(function(){ IDs.push(this.id); });
alert(IDs.length);
请帮忙。
答案 0 :(得分:3)
您正尝试在select
标记中获取select
标记,请删除查找部分,因为该部分已经包含select
标记的集合(假设ID前缀为product_id
的元素是选择标签)。如果还有其他具有ID前缀product_id
的元素,则将select
与以选择器开头的属性组合。
var IDs = [];
$("#dynamic_field select[id^='product_id']").each(function(){ IDs.push(this.id); });
alert(IDs.length);
map()
方法生成数组,而使用get()
方法将jQuery集合转换为数组。
var IDs = $("#dynamic_field select[id^='product_id']").map(function(){ return this.id; }).get();
或使用jQuery.map
方法。
var IDs = $.map($("#dynamic_field select[id^='product_id']"), ele => ele.id);