这有效:
$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
但这不是:
$(myObj).attr({
data-test-1: num1,
data-test-2: num2
});
我错过了一些非常明显的东西吗?
答案 0 :(得分:121)
当然,像这样:
$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
与.attr()
文档状态类似:
一次设置多个属性
更改alt属性并添加title属性 时间,一次使用将两组名称和值传递给方法 一个普通的JavaScript对象。对象中的每个键值对都会添加或 修改属性:
$('#greatphoto').attr({ alt: 'Beijing Brush Seller', title: 'photo by Kelly Clark' });
设置多个属性时, 属性名称周围的引号是可选的。
答案 1 :(得分:4)
是的,可以设置多个属性,只需使用简单的Object文字语法。例如:
$('#my_image').attr({
alt: 'Beijing Brush Seller',
title: 'photo by Kelly Clark'
});
有关attr方法的更多信息,请访问here。
答案 2 :(得分:0)
很抱歉,这么多年以来,对于已经解决的问题发布了答案。
我只是想使用建议的解决方案使线程保持最新状态 [需要引用] 。
自jQuery 1.2.3
起,就有一个.data()
函数接受参数来获取/设置数据属性(自1.4.3
起可以设置多个值),如下所示:
template <typename T, template <typename> class... Predicates>
using where_t = std::enable_if_t<std::conjunction_v<Predicates<T>...>>;
template <typename T, typename = where_t<T, std::is_default_constructible, std::is_class>>
struct my_struct
{
};
必须注意,使用/*
** 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
设置数据属性不会更新DOM,因此您无法在DOM检查器中看到它们。而且,它们与.data()
不交叉兼容。但是,可以用.attr()
来检索用.attr()
设置的数据属性(简而言之,可以用.data()
检索以'data-'开头的任何属性)。 < / strong>
.data()