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

这种方法是有效的:

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

但事实并非如此:

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

我是不是漏掉了什么很明显的东西?

94421 次浏览

当然,像这样:

$(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'
});

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

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

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

关于 attr 方法的更多信息可以找到 给你

很抱歉这么多年来我一直在回答一个已经解决的问题。

我只是想保持线程与推荐的解决方案 [需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用][需要引用]保持同步。

从 jQuery 1.2.3开始,有一个 .data()函数,它接受参数来获取/设置数据属性(设置多个参数在 1.4.3之后就可以使用了) ,如下所示:

/*
** 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()检索)。

// Setter
$('#my_image').attr('data-test-3', 'num3');    // note the 'data-' on attr name


// Getter
$('#my_image').data('test-3');    // num3