1.添加/修改/获取属性 attr() attr()方法其实是原生getAtrribute()和setAttribte()的结合体,语法上更加简洁。 它支持同时操作多个属性,只要将多个属性包装成对象传入即可 注意:它操作的是
1.添加/修改/获取属性 attr()
attr()方法其实是原生getAtrribute()和setAttribte()的结合体,语法上更加简洁。
它支持同时操作多个属性,只要将多个属性包装成对象传入即可
注意:它操作的是标签内的属性
<body> <div id="test">hello world</div> </body> <script> $(function(){ var $div = $("div") // 添加class属性 $div.attr("class","center") // 添加自定义属性 $div.attr("xxx","abc") // 修改id属性的值 $di.attr("id","box") // 获取属性值 console.log($div.attr("id")) //box }) </script>
运行结果:
<div id="test" class="center" xxx="abc">hello world</div>
同时操作多个属性
<body> <div id="test">hello world</div> </body> <script> $(function(){ var $div = $("div") // 同时操作多个属性 $div.attr({ "id":"box", "class":"center", "xxx":"abc" }) }) </script>
运行结果与上面的一致:
<div id="box" class="center" xxx="abc">hello world</div>
2.移除属性 removeAttr()
可以移除一个或多个属性,每个属性用 空格 隔开
<body> <div id="box" class="center" xxx="abc">hello world</div> </body> <script> $(function(){ var $div = $("div") // 移除一个属性 $div.removeAttr("xxx") // 移除多个属性 $div.removeAttr("id class") }) </script>
运行结果:
<div>hello world</div>
3.prop()
prop()可以读取/修改/添加 元素的属性,相当于原生js的点语法
注意:严格的说,attr()操作标签属性,而prop()操作js内存中元素的属性,在操作元素原生的属性(id,class,title)时,他们作用时一样的,或者说他们数据共通。
但是在操作多选,复选框的 checked 属性时,还是有区别的。因为标签的 checked 只是在初始化时有用,其他时候只是摆设。真正生效的是内存中的元素属性,所以此时只能用prop()
基本用法:
<script> $(function(){ var $div = $("div") // 修改id属性 $div.prop("id","box") // 添加元素属性 $div.prop("className","center") // 添加自定义属性(无效) $div.prop("yyy","def") console.log($div.prop("yyy")) // def // 同时操作多个属性 $div.prop({ title:"this is a title", color:"red" }) console.log($div) //没有看见 yyy 和 color 属性 }) </script>
运行结果:
<div id="box" class="center" title="this is a title">hello world</div>
通过prop()设置的自定义属性既不在div标签中,也没有挂载到$div对象中。其实它挂载到了原生Dom中了
var div = document.querySelector("div") console.log(div.yyy,div.color) // def red
4.removeProp() 移除属性
只是将属性值设为 undefined
// 移除xxx自定义属性 $div.removeProp("xxx") console.log($div.prop("xxx"))//undefined // 移除title属性 $div.removeProp("title")
运行结果:
<div id="box" class="center" title="undefined">hello world</div>