Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery attr()方法创建数据破折号属性_Javascript_Jquery_Html_Attr - Fatal编程技术网

Javascript jQuery attr()方法创建数据破折号属性

Javascript jQuery attr()方法创建数据破折号属性,javascript,jquery,html,attr,Javascript,Jquery,Html,Attr,我试图弄清楚,为什么在向(比如图像)添加数据属性时,需要将属性名放在引号中。我知道这需要去做,但如果有学生问我,我不会有确切的答案。下面举两个例子 1.)我正在寻找破折号问题的解释。 2.)有没有办法逃避它,这样你就不需要用引号括起来 这不起作用: $("img").attr({ alt: "a picture of my cat", data-item : "pet", data-color : "orange", }); 这确实有效 $("img").attr({

我试图弄清楚,为什么在向(比如图像)添加数据属性时,需要将属性名放在引号中。我知道这需要去做,但如果有学生问我,我不会有确切的答案。下面举两个例子

1.)我正在寻找破折号问题的解释。
2.)有没有办法逃避它,这样你就不需要用引号括起来

这不起作用:

$("img").attr({
    alt: "a picture of my cat",
    data-item : "pet",
    data-color : "orange",
});
这确实有效

$("img").attr({
    alt: "a picture of my cat",
    'data-item' : "pet",
    'data-color' : "orange",
});
3.)传递给attr()方法的参数是对象文字,对吗?
4.)这只是对象文字语法中不允许破折号的规则吗?

1。)在对象文字中,
-
符号不允许作为标识符,因为它也是javascript中的减号运算符

2.)不,你必须使用引号

是的

4)是的,见1。我同意

然而,我要提出的另一点是使用
jQuery.data()

jQuery.data()
实际上并不更新DOM,而是更新引用元素的javascript对象并将值存储在其中

由于不需要DOM操作,因此它的性能要好得多

$("img").attr({
    alt: "a picture of my cat"
}).data({
    item: "pet",
    color: "orange"
});
显然,这不会更新元素的属性,因此将来对这些值的任何引用都必须使用
jQuery.data()

如果你有兴趣了解它是如何运作的,我不久前写了一篇关于它的文章:


我就是这样解决的:

.attr({ style: "font-size : 50px;background-color : powderblue;font-family:arial" })

作为如何在元素创建语句中指定多个属性的具体示例。这是在上述示例不起作用之后进行的。

如果我可以用另一个问题回答:您能声明一个名为
数据颜色的变量吗?不,为什么?
-
不是破折号,而是减号运算符。解析器将其解释为减号运算符。你没有
在“pet”@EricBNo problem阿德里亚诺之后,就像我说的,我花了几分钟的时间来欣赏这个评论,但它确实让我想到了我应该首先处理这个问题的方式。该属性名称的设置与变量设置的绑定规则相同。由于这个原因,您不能使用-dash。对于3),jQuery说:“注意:属性值是字符串,除了一些属性,如value和tabindex。”@florin.prisecariu属性值是属性的实际值,如
“在
alt
中我的猫的图片”
,不是您传递给
.attr
函数的内容我感谢您以这种格式回答了问题!在我的教程中,我将使用它作为一种方式来深入到数据方法中。顺便说一句。。离题。。我喜欢你关于jQUery名称空间的教程,我在twitte上也跟着你。伟大的网站@埃里克谢谢埃里克,我很感谢你的反馈,我很高兴这是有用的:)你觉得你能帮我解决另一个问题吗?我有一段jQUery,我需要先演示链接,然后再将一段代码重构为循环?我有JavaScript中的示例,但无法在jQUery中找到它。如果可以的话,我可以给您发送一封电子邮件?这个数据jQUery存储教程非常棒。我想我会花一些时间在你的网站上。英雄联盟
.attr({ style: "font-size : 50px;background-color : powderblue;font-family:arial" })