0

这可能是一个奇怪的问题。我正在尝试将两个数组融合在一起,但读出的结果将它们显示为不同类型的对象。当我提醒他们时,由 .serializeArray() jquery 函数收集的第一种类型显示如下:

[object Object]

第二个,我通过使用更多的 JS 方式来推动每个选项,显示如下:

[object HTMLOptionElement]

下面是我的代码:

   incrCopy();
   enableSubmit();
   disableReset();

   var linkedInArray = [];
   $('form select option.linked-in').each( function() {
   linkedInArray.push(this);
   })
   //These alert the second way

   prevVals = $("form").serializeArray();
   //They alert the first way
   prevVals.push(linkedInArray);
   alert(prevVals);

有人知道我在这里缺少什么吗?

4

1 回答 1

2

这不是 jQuery 和 JavaScript 之间的区别。这就是serializeArray工作原理。它不返回 HTML 元素列表,而是返回具有名称/值属性的普通旧对象列表。

例如,是否找到这样的东西:

<input name="user[eye_color]" value="brown" />
<input name="user[age]" value="47" />

它会返回一个普通的旧对象数组,看起来像这样:

[
  {
    name: "user[eye_color]",
    value: "brown"
  },
  {
    name: "user[age]",
    value: 47
  }
]

相反,您的第一个循环遍历 jQuery 选择器,其中每个元素都是某种原生HTMLElement元素(HTMLDivElementHTMLInputElementHTMLTableElement等)。

于 2012-10-25T18:26:12.527 回答