繁体   English   中英

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

[英]Trying to add an HTML class attribute to jQuery object

我正在尝试从HTML div元素中获取类名,并将其添加到现有对象中。 令我发狂的是我可以使它工作,但我说的每个语法错误检查都说代码是错误的。 我搜索得非常彻底,但我甚至不知道该怎么说这个问题。 这是不抛出错误的代码:

$.each( $(objDiv).children('div'), function(){
    var field = $(this).attr('class');
    var value = $(this).text();
    var add = { field : value };
    $.extend(obj, add);
});

但问题是它将“字段”作为字段的字符串

object {label:“level3a”, field :“在可持续专业知识之后,以权威方式增强以客户为中心的可交付成果。”}

object {label:“level3a”, field: “完全接受点击实体数据而无需普遍存在的元服务。”}

不是类名值。 为了解决这个问题,我将括号放在“字段”周围:

$.each( $(objDiv).children('div'), function(){
    var field = $(this).attr('class');
    var value = $(this).text();
    var add = { [field] : value };
    $.extend(obj, add);
}

它给了我正在寻找的结果,

object {label:“level3a”, ClassA :“在可持续专业知识之后,以权威方式增强以客户为中心的可交付成果。”}

object {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中你所写的是有效的javascript,使用的是所谓的ComputedPropertyName 然而,所有浏览器都不支持它,因此在ECMA6的浏览器支持变得更好之前,最好使用括号 - 表示法属性名称方法。 有关详细信息,请参阅此答案: https//stackoverflow.com/a/2274327/2748503

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM