1. 主页 > 小妙招

jQuery对象如何动态修改元素属性?手把手教学

你是不是经常遇到这种情况?网页上的图片死活不切换,按钮点了没反应,输入框的提示文字改不动...(停顿)别急着砸键盘!今天咱们就用最直白的方式,把动态修改元素属性这个事儿聊透。准备好你的咖啡,咱们边喝边撸代码!

(突然拍桌子)等等!先确认你用的真是jQuery对象!上周有个兄弟把document.getElementById("img1")和$("#img1")混着用,结果改了半天属性愣是没变化...


第一关:基础认知篇

??问题一:属性到底是个啥玩意儿???
举个栗子,就像你的身份证——姓名、性别、出生日期都是"属性"。网页里的标签,src、alt、width这些就是它的属性。用jQuery修改属性,就像给身份证换照片,得找对方法。

??问题二:为什么要用jQuery改属性???
原生JS也能改啊!但jQuery有两个绝活:①链式操作一气呵成 ②浏览器兼容问题它全包了。不信你看:

javascript复制
// 原生JS三行代码 ↓
let img = document.getElementById("logo");
img.src = "new_image.jpg";
img.alt = "2024最新logo";

// jQuery一行搞定 ↓
$("#logo").attr({src:"new_image.jpg", alt:"2024最新logo"});

第二关:实战操作篇

??问题三:具体怎么改单个属性???
记住这个万能公式:$(元素).attr("属性名", "新值")。比如让按钮变灰:

javascript复制
$("#submitBtn").attr("disabled", true);

(突然想到)这里有个坑!布尔值属性(disabled、checked)最好用prop()方法,用attr()可能出幺蛾子。后面会详细说...

??问题四:怎么批量修改多个属性???
像超市大采购一样打包修改:

javascript复制
$("#userAvatar")
  .attr({
    src: "uploads/new_photo.png",
    "data-uid": "2024001",  // 自定义属性要加引号
    loading: "lazy"
  });

注意多单词属性要用驼峰命名或加引号,比如data-user-id要写成"data-user-id"


第三关:疑难杂症篇

??问题五:改了属性为啥不生效???
常见翻车现场盘点:

  1. 选择器写错了——检查id/class是否拼写正确
  2. 属性名大小写搞混——html属性都是小写!
  3. 异步加载内容没绑定事件——用事件委托解决

??问题六:attr()和prop()到底用哪个???
记住这个口诀:

  • 普通属性用attr() (href/src/alt...)
  • 布尔属性用prop() (checked/selected/disabled...)

对比实验:

javascript复制
// 复选框的正确操作 ↓
$("#agreeCheck").prop("checked", true);  // 能正确改变状态
$("#agreeCheck").attr("checked", true);  // 只在初始化有效

第四关:高阶玩法篇

??问题七:怎么动态添加自定义属性???
data-*属性现在超流行!比如记录用户ID:

javascript复制
$(".userCard").attr("data-user-id", "u2024001");

读取的时候更推荐用.data()方法:

javascript复制
let userId = $(".userCard").data("userId"); // 自动转换数据类型

??问题八:修改属性后触发动画???
结合CSS过渡效果玩出花样:

javascript复制
$("#banner")
  .attr("data-state", "expanded") // 添加状态属性
  .css("transform", "scale(1.2)"); 

然后在CSS里写:

css复制
#banner[data-state="expanded"] {
  transition: transform 0.5s;
}

??小编观点??
最近总有人唱衰jQuery,说什么"老古董该淘汰了"。要我说啊,现在还有78%的网站在用jQuery(2023 W3Techs数据)!特别是快速修改属性这种基础操作,jQuery比原生JS省事不止十倍。当然新项目可以用现代框架,但维护老项目时这就是救命稻草。记住,工具没有高低贵贱,能解决问题的就是好工具!

本文由嘻道妙招独家原创,未经允许,严禁转载