是否可以使用jQuery.attr()函数设置多个数据属性?

Gar*_*tet 60 javascript jquery

这有效:

$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
Run Code Online (Sandbox Code Playgroud)

但这不是:

$(myObj).attr({
  data-test-1: num1,
  data-test-2: num2
});
Run Code Online (Sandbox Code Playgroud)

我错过了一些非常明显的东西吗?

j08*_*691 128

当然,像这样:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
Run Code Online (Sandbox Code Playgroud)

.attr()文档状态一样:

一次设置多个属性

要更改alt属性并同时添加title属性,请使用纯JavaScript对象立即将两组名称和值传递到方法中.对象中的每个键值对都会添加或修改属性:

$('#greatphoto').attr({
  alt: 'Beijing Brush Seller',
  title: 'photo by Kelly Clark'
});
Run Code Online (Sandbox Code Playgroud)

设置多个属性时,属性名称周围的引号是可选的.

  • "属性名称周围的引号是可选的"仅适用于camelCased属性,OP想要使用破折号,在这种情况下引号应该是强制性的 - >`Unexpected token -` (7认同)
  • 我知道这一点,但破折号是造成OP问题的原因所以我想应该补充一点. (4认同)

Gor*_*ran 6

是的,可以设置多个属性,只需使用简单的对象文字语法。例子:

$('#my_image').attr({
  alt: 'Beijing Brush Seller',
  title: 'photo by Kelly Clark'
});
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关 attr 方法的更多信息。

  • [JSON 与对象字面量语法不同](http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation)。你使用的是后者。 (2认同)