首先我们得了解什么是属性和属性节点~
1)属性和属性节点
?什么是属性
?什么是属性节点
function Per(){};//类
var er = new Per(); //new一个对象
er.name='二麻' //name就是属性
er['name']=‘二麻’//第二种方式
<span name ='oscar'></span>// HTML 标签里name就是属性节点;
属性节点都保存在 attributes里;
JS设置属性节点
var $id1 = document.getElementById("id1");
$id1.setAttribute("name",'ld');//设置属性节点
$id1.getAttribute("name");//获得属性节点
了解后 我们在说Attr与Prop
2)Attr和Prop
Attr(方法)
var $span = $("span").attr('name');//这种写法如果有多个Span 只会返回第一个
var $span = $("span").attr('name','xj');//所有的Span 的 name节点属性 都会被设置成xj
var $span = $("span").attr('LL','IT');//如果HTML所有 span里没有这个LL节点属性 就会增加LL节点属性 并赋值IT
var $span = $("span").removeAttr("name LL");//所有都Span的 name 和 LL节点属性都会被删除
Prop(方法)
功能和Attr大同小异
var $span = $("span").prop('name','oll'); 增加了一个固有属性name 设置成oll
var $span = $("span").prop('class'); 参数要是固有属性 会查询到满足的第一个
var $span = $("span").removeProp('name'); 与Attr一样 删除
var $span = $("span").prop('class','IT');设置属性节点class值为IT
3)Attr和Prop区别
那么Pro和attr 有什么区别?
1)Html固定标签 比如Class 和ID这样的 用Prop ,自定义属性 用Attr
2)Prop优于Attr(怎么优于 咱暂时不知道)
3)在具有 true和false俩个属性的属性节点,如 checked, selected或者disabled使用prop() 其他使用attr()
举个栗子 input标签 有无 checked 通过返回值我们知道 Prop更容易判断一些
var $name = $("input").prop('checked');
console.log('value :', $name);// true/false
var $arname = $("input").attr('checked');
console.log('value :', $arname);// checked /undefined
<input type="checkbox" checked/>