我正在尝试从 HTML div 元素中获取类名并将其添加到现有对象中。令人抓狂的是我可以让它工作,但是我放入它的每个语法错误检查器都说代码是错误的。我已经彻底搜索过了,但我什至不知道如何表达这个问题,真的。这是不会引发错误的代码:
$.each( $(objDiv).children('div'), function(){
var field = $(this).attr('class');
var value = $(this).text();
var add = { field : value };
$.extend(obj, add);
});
但问题是它将“字段”作为字段的文字字符串放入
对象 {label: "level3a", field: "在可持续的专业知识之后权威地增强以客户为中心的可交付成果。"
对象 {label: "level3a", field: “在没有无处不在的元服务的情况下完全接受点击和砂浆数据。”
不是类名值。为了解决这个问题,我将“字段”放在方括号中:
$.each( $(objDiv).children('div'), function(){
var field = $(this).attr('class');
var value = $(this).text();
var add = { [field] : value };
$.extend(obj, add);
}
它给了我想要的结果,
对象 {label: "level3a", ClassA:“在获得可持续的专业知识后,权威地增强以客户为中心的可交付成果。”
对象 {label: "level3a", ClassB: “完全接受点击和砂浆数据,没有无处不在的元服务。”
但不知何故这是不正确的。关于我在这里做错了什么的任何想法,或者更好的方法来完成这个?
最佳答案
虽然我不能告诉你为什么这是错误的(或者为什么它有效,就此而言),但我可以告诉你一个更“正确”的方法。
您可以像这样将 add
声明为一个空对象:add = {};
然后您可以像这样将字段作为属性添加到它:add[field] = value;
这会给你一个对象 add
模型:{ ClassA: "Your text here"}
更多信息请引用属性访问器类型:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors .上面详述的方法使用“Bracket Notation”
编辑:显然在 ECMA6 中,您使用所谓的 ComputedPropertyName 编写的是有效的 javascript。然而,并非所有浏览器都支持它,因此在浏览器对 ECMA6 的支持变得更好之前,您最好使用括号表示法属性名称方法。有关详细信息,请参阅此答案:https://stackoverflow.com/a/2274327/2748503
关于javascript - 尝试向 jQuery 对象添加 HTML 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272264/