一、attr和prop的区别
通过prop和attr处理自定义属性
<img src="" alt="" id="test1" abc="self">
var test1 = $("#test1"); //都能对固有属性设置值 /*赋值前*/ console.log(test1.prop("abc"));//undefined /*赋值后*/ console.log(test1.prop("abc",123)); console.log(test1.prop("abc"));//123 /*赋值前*/ console.log(test1.attr("abc"))//self /*赋值后*/ console.log(test1.attr("abc",456)) console.log(test1.attr("abc"))//456
可见,attr和prop都能对属性赋值
区别在于,对于已声明且赋值的自定义属性,
赋值前: attr返回标签中的值,prop返回undefined
赋值后:都能返回新值
自定义属性只声明,不赋值
/*赋值前*/
console.log(test1.prop("abc"));//undefined
/*赋值后*/
console.log(test1.prop("abc",123));
console.log(test1.prop("abc"));//123
/*赋值前*/
console.log(test1.attr("abc"))//空
/*赋值后*/
console.log(test1.attr("abc",456))
console.log(test1.attr("abc"))//456
attr返回空,prop返回undefined
自定义属性不声明
attr和prop都返回undefined
通过 attr和prop处理仅声明的固有属性值
/*赋值前*/ console.log(test1.attr("alt"));//返回空字符串 console.log(test1.prop("alt"));//返回空字符串 /*赋值后*/ console.log(test1.attr('alt', '测试')) console.log(test1.prop("alt"));//测试 console.log(test1.prop('alt', '测试1')) console.log(test1.prop("alt"));//测试1
属性仅声明赋值前attr和prop均返回定义的值(值为空时返回空字符串)
但是如果处理的是未声明属性:
<img src="" id="test1" abc="self">
/*赋值前*/
console.log(test1.attr("alt"));//undefined
console.log(test1.prop("alt"));//返回空
/*赋值后*/
console.log(test1.attr('alt', '测试'))
console.log(test1.prop("alt"));//测试
console.log(test1.prop('alt', '测试1'))
console.log(test1.prop("alt"));//测试1
未声明属性赋值前:attr对未声明的固有属性返回undefined,prop返回空
声明且赋值:
attr和prop都返回定义的值
所以
attr对固有属性和自定义属性:属性声明,有值返回值,无值返回空;属性未声明undefined
prop对固有属性:属性声明,有值返回值,无值返回空;属性未声明返回空
prop对自定义属性:属性声明,有值undefined,无值undefined; 属性未声明undefined
但是透过prop对自定义属性重新赋值可以返回赋值后的结果
再所以:
对固有属性:属性声明,有值attr和prop都返回值,无值都返回空;未声明,attr返回undefined,prop返回空
对自定义属性:属性无论是否声明,prop都返回undefined,除非使用prop对自定义属性赋值
对于checked:
http://www.runoob.com/try/try.php?filename=tryjquery_html_prop_attr
attr返回标签内定义的值且不随标签状态改变而改变
prop返回T/F随标签状态改变
二、ajax参数
三、遍历DOM元素的方法
四、本地存储
五、formset