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

标签 javascript jquery html oop

我正在尝试从 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/

相关文章:

javascript - 使用 jquery 在悬停时添加 div

javascript - 如何从组件的操作中动态改变 Storybook v6 中的 "args"?

javascript - AngularJS 1.x 选择 MultiSelect 添加新值

javascript - 对 jquery 事件使用未声明的属性

javascript - 使用 jQuery 在具有多个类的 div 的内容中搜索嵌套在元素中的字符串

html - 带有多行文本的标签内的中心复选框

javascript - 切换 Bootstrap 导航下拉菜单

javascript - 为什么 window.location.href 再次附加 url

javascript - 如何在 ASP.NET C# 中显示谷歌地图

javascript - 深度自引用对象的属性