「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
jQuery的attr和prop方法
html代码(用于后面操作):
<body>
<span class="span1" name="zxy"></span>
<span class="span2" name="lmr"></span>
</body>
attr(name|pro|key,val|fn)
- 作用:获取或者设置属性节点的值。
- 传入一个参数:代表获取属性节点的值。
- 传入两个参数:代表将获取到的第一个参数的属性节-
- 注意:
- 获取时:只会返回找到的第一个元素中指定属性节点的值
- 设置时:找到多少个元素就设置多少个元素,如果设置的指定元素中没有该节点,系统将会自动为其添加该节点。
代码示例:
- 获取属性节点属性
- 设置属性节点属性
- 设置属性节点属性(不存在的属性节点)
$(function(){
//获取属性节点属性
console.log($("span").attr("class"));
//设置属性节点属性
$("span").attr("class","123")
//设置属性节点属性(不存在的属性节点)
$("span").attr("abc","456")
});
结果:
removeAttr(name)
- 作用:删除属性节点
- 注意点:
- 只能传入一个参数,如果想同时删除多个属性节点,多个属性节点之间可使用空格隔开。
- 删除时,会删除所有找到元素的指定属性节点。
代码示例:
- 移除所有span的name,class,abc的属性节点
$(function(){
$("span").removeAttr("name class abc")
});
结果:
prop
html代码:
<body>
<span class="span1" name="zxy"></span>
<span class="span2" name="lmr"></span>
</body>
- 特点和attr方法一致。
- 注意点:
- prop既可以操作属性又可以操作属性节点
代码示例:
- 获取到第0个span,设置获取到的指定属性节点的属性值,没有便添加
- 获取指定属性节点的属性值
- 直接设置属性指定属性节点的值
$(function(){
//获取到第0个span,设置获取到的指定属性节点的属性值,没有便添加
$("span").eq(0).prop("demo","zxy666");
//获取指定属性节点的属性值
console.log($("span").prop("demo"));
//直接设置属性指定属性节点的值
$("span").prop("class","text")
});
结果:
removeProp
- 特点和removeAttr方法一致
代码示例:
- 移除所有名称为 demo 的属性节点的值
$(function(){
//移除所有名称为 demo 的属性节点的值
$("span").removeProp("demo")
});
结果:
注意:
代码示例:
<script>
$(function(){
console.log($("input").prop("checked")); //true / false
console.log($("input").attr("checked")); //checked / undefined
});
</script>
<body>
<!-- <input type="checkbox" checked> -->
<input type="checkbox">
</body>
结果:
- 此时当checkbox状态为选中时使用prop方法会打印 true ,而使用attr方法则会打印 checked ;当checkbox状态为未选中时使用prop方法会打印 false ,而使用attr方法则会打印 undefined;可见这时两种方法产生差异,所以当需要操作时需要使用Boolean值进行操作时,则选择使用prop方法。
官方推荐在操作属性节点时,具有true和fasle两个属性的属性节点,如checked,selected或者 disabled使用prop(),其他使用attr()即可。
小练习:使用attr方法和prop方法同通过输入文本框图片地址,点击按钮改变img。
示例代码:
<script>
$(function(){
//1.获取文本框图片地址
var input = document.getElementsByTagName("input")[0];
//2.设置img地址为文本框地址
var newImg = document.getElementsByTagName("button")[0];
newImg.onclick = function(){
var text = input.value;
//修改img的src属性节点的值
// $("img").attr("src",text);
$("img").prop("src",text);
//3.清楚文本框
newImg="";
}
});
</script>
<body>
<input type="text">
<button>换图片</button><br>
<img src="https://i0.hdslb.com/bfs/archive/9e5f278027
ae7f1e1933b6e4002870361da6c20b.png" alt="">
</body>
结果: