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()
仍然存储为类型号。