首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试向jQuery对象添加HTML属性

尝试向jQuery对象添加HTML属性
EN

Stack Overflow用户
提问于 2016-03-28 22:28:00
回答 1查看 48关注 0票数 3

我试图从HTML元素中获取类名,并将其添加到现有的对象中。令人恼火的是,我可以让它工作,但是我把它放入的每个语法错误检查器都说代码是错误的。我已经搜索了相当彻底,但我甚至不知道如何表达这个问题,真的。下面是不抛出错误的代码:

代码语言:javascript
复制
$.each( $(objDiv).children('div'), function(){
    var field = $(this).attr('class');
    var value = $(this).text();
    var add = { field : value };
    $.extend(obj, add);
});

但问题是,它将" field“作为字段的文字字符串放入。

对象{label:"level3a",field__:“权威地增强可持续专业知识之后以客户为中心的可交付产品”}

对象{label:"level3a",字段:“完全包含没有无处不在的元服务的点击和实际数据”}

而不是类名值。为了避免这种情况,我在“field”旁边加上了括号:

代码语言:javascript
复制
$.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:“完全包含没有无处不在的元服务的点击和实际数据”}

但不知怎么的,这是不正确的。对我在这里做错了什么有什么想法,或者有什么更好的方法来完成这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 22:33:39

虽然我不能告诉你为什么这是错误的(或为什么它的工作,就这件事),我可以告诉你一个更“适当”的方式来做它。

您将声明add为空对象,如下所示:add = {};

然后可以将字段作为属性添加到其中,如下所示:add[field] = value;

这将为您提供一个带有模型的对象add{ ClassA: "Your text here" }

请参考属性访问器的类型,以获得更多信息:Accessors。上述方法使用“括号表示法”。

编辑:显然,在ECMA6中,您编写的是有效的javascript,使用的是所谓的ComputedPropertyName。然而,它还不是所有浏览器都支持的,所以在浏览器对ECMA6的支持变得更好之前,最好使用括号-符号属性名称方法。有关更多信息,请参见以下答案:https://stackoverflow.com/a/2274327/2748503

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36272264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档