我在一个页面上有多个输入,它们都有相同的类名authority-email。使用jquery,我使用以下方法从所有输入获取值:

var emailObj = {};
$("input[class=authority-email]").each(function () {
  var email = $(this).val()

  emailObj = email;

  console.log(emailObj);
});

可以使用jquery删除这些输入并将其添加到dom中。输入中的值也可以编辑。
当输入发生变化(删除、添加、编辑)时,将其值实时传递给MyemailObj的最佳方式是什么?

最佳答案

当前代码在循环的每次迭代中将emailObj从对象更改为字符串,而不是修改对象本身的属性。还要注意,可以使用.样式选择器按类匹配元素。
为了达到您的要求,可以使用map()从jquery对象中的一组元素创建一个数组。然后,您可以将其分配给emailObj对象的必需属性。例如:

var emailObj = {};
emailObj.emails = $("input.authority-email").map(function () {
    return this.value;
});
console.log(emailObj.emails); // = [ '[email protected]', '[email protected]', ... ]

要在“实时”中更新对象,请挂钩到输入本身的changekeyup事件:
var emailObj = {};
$("input.authority-email").on('change keyup', function() {
    emailObj.emails = $("input.authority-email").map(function () {
        return this.value;
    });
    console.log(emailObj.emails); // = [ '[email protected]', '[email protected]', ... ]
});

09-07 03:35