知识回顾

学习jQuery属性方法前,先回顾一些概念:

什么是属性?如何操作属性?

属性:属性就是对象中保存的变量;

操作属性

var obj = {};
obj.name = 'peanut';
// 或
obj["name"] = "peanut";

什么是属性节点?如何操作属性节点?

属性节点:在编写html时为元素添加的属性就是属性节点,相应地DOM元素的所有属性节点全部保存在attributes集合中;

操作属性节点

  • DOMEle.setAttribute(attr,value): 设置属性;
  • DOMEle.getAttribute(attr): 获取属性值;
  • DOMEle.removeAttribute(attr): 删除属性;

属性和属性节点的区别?

所有的对象都有属性,但是属性节点是DOM对象所特有的;


jquery中的属性方法

1.attr()方法和removeAttr()方法

attr()方法:获取或设置属性值;

  • 只给一个参数:获取匹配的元素集合中的第一个元素的属性值;
  • 给两个参数:设置匹配元素的属性和属性值(设置多个属性时,只需要字符串之间空格隔开);

注意:获取属性值时,如果有多个元素匹配,只返回元素集合中的第一个元素对应的属性值;设置属性值时,设置的是所有匹配元素的属性值;

语法

.attr(name|properties|key,value|fn);

代码演示:

<img name="img1">
<img name="img2">
<script>
    // 一个参数:表示获取指定属性的值
    var res1 = $('img').attr('name');
    console.log(res1);//img1,在有多个元素匹配时,只返回符合匹配条件的元素集合中的第一个元素的属性值
    
    // 两个参数:设置属性值,不存在就新设置一个属性,存在的话就修改属性值
    $('img').attr('src','https://picsum.photos/200/300');//为所有元素设置src属性
    $('img').attr('title',function(){//将title属性值设置为src的值
        return this.src;
    })
</script>

reniveAttr(name)方法:从匹配的元素中删除属性(删除所有匹配元素的属性);

语法

//name:要删除的属性名
.removeAttr(name);

// 以上文的img元素为例
// 删除src属性
$('img').removeAttr('src');

2.prop()方法和removeProp()方法

prop(name|properties|key,value|fn)方法:获取在匹配的元素集中的第一个元素的属性值,或设置匹配元素集合中元素的属性值;

  • 与attr方法一样,一个参数时表示获取属性值,两个参数时设置属性和属性值;

removeProp(name)方法:用来删除由.prop()方法设置的属性集;

  • 特点与removeAttr()方法一样;

prop方法与attr方法的区别

  • 对具有true、false两个属性值的属性的返回情况不同
  • prop方法不仅能操作属性,还能操作属性节点(Attributes集合中的属性)
  • 因此,在操作属性节点时,对checked、disabled、selected等属性,使用prop方法更好;
  • 如下代码所示:
<input type="checkbox" checked>
<script>
    var res1 = $('input').attr('checked');
    var res2 = $('input').prop('checked');
    console.log(res1);// checked
    console.log(res2);// true
    // 在读取不存在的属性时
    var res3 = $('input').attr('disabled');
    var res4 = $('input').prop('disabled');
    console.log(res3);// undefined
    console.log(res4);// false
</script>
  • 显而易见,在对只有true和false两个属性值的属性进行操作时,prop方法是最合适的;