在jQuery中从页面元素制作数组

时间:2013-08-23 07:34:29

标签: javascript jquery html arrays object

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

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

2 个答案:

答案 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定义的属性(现在和将来)发生冲突。