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

Javascript 是否可以使用jQuery.attr()函数设置多个数据属性?,javascript,jquery,Javascript,Jquery,这项工作: $(myObj).attr("data-test-1", num1); $(myObj).attr("data-test-2", num2); 但这并不是: $(myObj).attr({ data-test-1: num1, data-test-2: num2 }); 我错过了一些非常明显的东西吗?当然,像这样: $(myObj).attr({"data-test-1": num1, "data-test-2": num2}); /* ** In all the

这项工作:

$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
但这并不是:

$(myObj).attr({
  data-test-1: num1,
  data-test-2: num2
});
我错过了一些非常明显的东西吗?

当然,像这样:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
/* 
 ** In all the example below, note that 
 ** 'data-' is removed from attribute name
 */

// Setter (single)
$('#my_image').data('test-1', 'num1');
$('#my_image').data('test-2', 'num2');

// Setter (multiple)
$('#my_image').data({'test-1':'num1', 'test-2':'num2'});

// Getter (single)
$('#my_image').data('test-1');    // num1
$('#my_image').data('test-2');    // num2
就像文件中所说的:

一次设置多个属性

更改alt属性并同时添加title属性的步骤 同时,使用 一个普通的JavaScript对象。对象中的每个键值对添加或 修改属性:

$('#greatphoto').attr({
  alt: 'Beijing Brush Seller',
  title: 'photo by Kelly Clark'
});
设置多个属性时,
属性名称周围的引号是可选的


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

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

有关attr方法的更多信息,请访问。

很抱歉在这么多年后发布了一个已经解决的问题的答案

我只是想用推荐的解决方案保持线程的最新状态

自jQuery以来,有一个函数使用参数来获取/设置数据属性(设置多个属性是因为可用的),如下所示:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
/* 
 ** In all the example below, note that 
 ** 'data-' is removed from attribute name
 */

// Setter (single)
$('#my_image').data('test-1', 'num1');
$('#my_image').data('test-2', 'num2');

// Setter (multiple)
$('#my_image').data({'test-1':'num1', 'test-2':'num2'});

// Getter (single)
$('#my_image').data('test-1');    // num1
$('#my_image').data('test-2');    // num2
必须注意,使用
.data()
设置数据属性不会更新DOM,因此在DOM检查器中无法看到这些属性。此外,它们与
.attr()
不交叉兼容。但是,使用
.attr()
设置的数据属性可以通过
.data()
检索(简而言之,任何以“data-”开头的属性都可以通过
.data()
检索)。


第二个示例产生语法错误。除非将对象键分隔为类似
{“data-test-1”:“data”}
的字符串,否则不能在对象键中使用破折号。您使用的是后者。“属性名称周围的引号是可选的”仅适用于camelCased属性,OP希望使用破折号,在这种情况下引号应该是强制性的->
意外标记-
@m90-直接从jQuery API获取,这不是我的评论。我知道这一点,但破折号是导致OP出现问题的原因,所以我想应该加上破折号。因为num1和num2是整数,我是否也需要将它们作为num1.toString()传递?我刚刚测试了它,它并不重要,因为偶数
num1.toString()
仍然存储为类型号。