0

我有一个巨大的 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);           
    }
});

任何帮助将不胜感激。我知道这可能是非常基本的,但我不经常进行这种类型的编码。谢谢你的帮助!

4

2 回答 2

3

改变

var location_array = new Object();

var location_array = [];

对象没有方法.push()

于 2013-08-23T07:37:18.933 回答
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。)


旁注:使用自定义属性时,请坚持使用前缀data-*避免与 HTML 定义的属性(现在和将来)发生冲突。

于 2013-08-23T07:38:46.957 回答