javascript - 如果 attr() 中有重复属性,那么它是否总是在 jquery 中应用最后一个重复属性?
问题描述
我很困惑,只是我想知道我是否在 attr() 中给出了重复的属性,那么我只能应用最后一个属性 ex --> 我attr({style:'color:yellow',style:'font-family:arial',style:'color:yellow'})
在这里给出了三个相同的样式只能应用最后一个吗?是否可以应用第二种样式?
<!DOCTYPE html>
<html>
<body>
<p id="prg1">first paragraph</p>
</body>
<script src="C:\Users\SUDARSHAN\Desktop\html_UI\jquery-3.6.0.js">
</script>
<script>
$('document').ready(function (){
$('#prg1').attr({style:'color:yellow',style:'font-family:arial',style:'color:yellow',style:'border-style:dotted'});
})
</script>
</html>
解决方案
因此,您的问题有点令人困惑,但我将尝试解决所有可能的情况:
- 您的代码有一个非常严重的错误:您不能在对象中有重复的键,无论这是样式还是
.attr()
函数。所以这是完全错误的;任何对象b = { a: 1, a: 2 }
都是无效的,不应使用,但结果将是b === { a: 2 }
- 如果您尝试使用
.attr({style:'color:yellow'}).attr({style:'font-family:arial')
yes,它将获得最后一个,因为该attr
函数总是覆盖该值,从不合并它; - 我认为这是您真正想知道的:
.attr({ style:'color:yellow; font-family:arial; border-style:dotted'});
查看样式上的每个项目都用“;”分隔。基本上,当您使用.attr
+ style 时,您正在为 html 元素设置完整的样式属性,这意味着整个 css 代码,因此您不需要每个道具一个“样式”,也不需要每个道具一个“属性”;只需将整个 css 字符串设置为 style 属性,也就是说,您可以拥有任意数量的 css 道具,只需将它们用 ';' 分隔即可
编辑:我已经根据您的问题在这里回答了,但正如@Phil 在下面的第一条评论中提到的那样,您可能会通过使用jquery的.css()获得更好的解决方案:
.css({
color: "yellow", fontFamily: "arial", borderStyle: "dotted"
});
注意带有“-”的道具使用驼峰式,或者将整个道具名称放在引号中,如“border-style”
:)
推荐阅读
- ruby-on-rails - 在 Ruby 中,有没有一种可接受的方式将类拆分为更小的、可组合的 mixin(知道父级)?
- python - 在 selenium 中使用 xpath 定位 svg 时出错
- google-cloud-platform - Dialogflow 对话/来自 Webhook 的响应恢复
- c++ - GCC 中的 C++20 [[no_unique_address]] 的错误?
- java - 使用 itext 设置 pdf 文档的出血和 slug
- c# - 使用给定的搜索参数无法在页面上找到元素
- javascript - 有没有办法将 JS 生成的声音传递给 WebRTC 麦克风?
- angular - 无法通过 MS Graph API 访问文件,但可以通过 Graph Explorer 工作
- node.js - 如何在 expressjs 中使用 axios 导致 res.render?
- sql - 选择最大值和按日期分组的相应行ID