2013-05-07 93 views
52

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

$(myObj).attr("data-test-1", num1); 
$(myObj).attr("data-test-2", num2); 

但这并不:

$(myObj).attr({ 
    data-test-1: num1, 
    data-test-2: num2 
}); 

我缺少的东西真的很明显吗?

+1

你的第二个例子会产生一个语法错误。 – Matt 2013-05-07 15:19:38

+5

除非用“{”data-test-1“:”data“}作为字符串分隔它们,否则不能在对象键中使用破折号。” – m90 2013-05-07 15:20:26

回答

98

当然,像这样:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2}); 

.attr()文档状态:

一次

设置几个属性来更改alt属性,同时添加标题属性 时间,使用 一个普通的JavaScript对象一次将两组名称和值传入方法。对象中的每个键 - 值对添加或修改 一个属性:

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

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

+7

“属性名称周围的引号是可选的”仅适用于驼峰属性,OP想要使用破折号,在这种情况下,引号应该是强制性的 - >'意外的标记 - ' – m90 2013-05-07 15:24:27

+0

@ m90 - 这是直接从jQuery API取得的,这不是我的评论。 – j08691 2013-05-07 15:25:10

+4

我意识到这一点,但破折号是导致OP的问题,所以我想应该补充说。 – m90 2013-05-07 15:26:27

4

是的,它可以设置多种属性,只需使用简单的对象文字语法。例如:约ATTR方法

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

更多信息可以发现here

+2

[JSON与对象文字语法不同](http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation)。你使用的是后者。 – Matt 2013-05-07 15:20:16

+0

我很抱歉,我已修复它:) – Goran 2013-05-07 15:21:51

相关问题