【问题标题】:Making Array From Page Elements in jQuery在 jQuery 中从页面元素创建数组
【发布时间】:2013-08-23 07:34:28
【问题描述】:

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

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

【问题讨论】:

  • parent 是 HTML 中的属性吗?
  • @MuhammadTalhaAkbar,我从未见过它,但它能够获取属性。就像我说的那样,我从另一个具有工作代码的页面复制了代码,并且我能够使用 console.log 打印出所有选项的“父”值,所以它可以工作。

标签: javascript jquery html arrays object


【解决方案1】:

改变

var location_array = new Object();

var location_array = [];

对象没有方法.push()

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2012-08-22
      • 2018-05-21
      • 2017-01-30
      • 1970-01-01
      相关资源
      最近更新 更多