我有一个巨大的HTML选择列表,其中包含许多选项。一些选项有一个'父'属性,我用它来识别。基本上,当有人选择父下拉列表时,所有孩子都会填充不同的下拉列表。所以我试图将所有这些对象放入一个数组中,将它们从页面中删除,然后在需要时调用它们。
这是我从我们正在使用的网站上获取的所有HTML代码,因此他们自己以某种方式工作(不知道如何)。我的想法只是制作一个对象并将项目推入该对象(使用'id'和'parent'键)。它似乎不像我这样做的方式:
var location_array = new Object();
$('select[name="location"] option').each(function(){
if($(this).attr('parent')){
var obj = {
id: $(this).attr('id')
parent: $(this).attr('parent')
}
location_array.push(obj);
}
});
非常感谢任何帮助。我知道这可能是非常基本的,但我不经常做这种类型的编码。谢谢你的帮助!
答案 0 :(得分:3)
更改
var location_array = new Object();
到
var location_array = [];
对象没有方法.push()
答案 1 :(得分:0)
您正在使用push
,但location_array
不是数组,而是一个对象。
我可能会把它作为一个对象(我改名了):
var parents = {}; // A better way to write `new Object()`
$('select[name="location"] option').each(function(){
var parent = $(this).attr('parent');
parents[this.id] = parent;
});
现在你有了一张地图,将元素ID映射到他们的父母。 (请注意,$(this).attr("id")
只是写this.id
的一种非常迂回的方式。)
附注:使用自定义属性时,请坚持使用the data-*
prefix以避免与HTML定义的属性(现在和将来)发生冲突。