0

好吧,我不认为我使用了正确的术语,但我会尝试解释相同的。我们有一个使用远程处理来自服务器的数据数组。现在我们正在使用 JSViews 将相同的内容添加到带有更新按钮的可编辑表单中。按下此按钮后,需要将数据发送回服务器。

我们成功地绑定了数据,但是当我们记录数据时,我们在数组和每个元素中看到了一个额外的属性“ jQuery19105520686232484877 ”。

{Name: "Cheese Production Facility", RecordTypeId: "012i0000000C1lHAAS", Id: "a01i00000057WQMAA2", Number_of_Sites__c: 0, jQuery19105520686232484877: Object}

有没有一种方法可以从初始数组中删除“ jQuery19105520686232484877 ”属性?

使用的模板

<li data-role="fieldcontain">
    <label for="propertyName">Name:</label>
    <input type="text" name="propertyName" data-link="Name" id="propertyName" value="" data-clear-btn="true"/>
</li>
 <li data-role="fieldcontain">
     <label for="dist">Dist:</label>
     <input type="text" name="dist" id="dist" data-link="Total_Number_of_Acres__c" value="" data-clear-btn="true"/>
</li>

JS代码

var propInfoObject = {
   Name: "Cheese Production Facility",
   RecordTypeId: "012i0000000C1lHAAS",
   Id: "a01i00000057WQMAA2",
   Number_of_Sites__c: 0
};
$.templates("#editPropertyTemplate").link("#editPropertyContent",propInfoObject);
4

1 回答 1

2

如果将事件附加到数组,则该额外属性是添加的 jQuery expando 属性:

$([myArray]).on("myevent" ...)

JsViews 附加了一个 arrayChange 事件处理程序 - 这就是您看到额外属性的原因。

然而 jQuery 属性是一个具有特殊属性的对象toJSON: function() {}

该函数不返回任何内容的事实告诉JSON.stringify()忽略该属性 - 在序列化期间跳过它。

因此,如果您使用JSON.stringify序列化数据并将其发送到服务器,则该属性根本不应该出现......

于 2013-10-15T02:39:39.363 回答