jQuery.prop() 使用详解


Posted in Javascript onJuly 19, 2015

prop()函数用于设置或返回当前jQuery对象所匹配的元素的属性值。

该函数属于jQuery对象(实例)。如果需要删除DOM元素的属性,请使用removeProp()函数。

语法

jQuery 1.6 新增该函数。prop()函数有以下两种用法:

用法一:

jQueryObject.prop( propertyName [, value ] )

设置或返回指定属性propertyName的值。如果指定了value参数,则表示设置属性propertyName的值为value;如果没有指定value参数,则表示返回属性propertyName的值。

参数value还可以是函数,prop()将根据匹配的所有元素遍历执行该函数,函数中的this指针将指向对应的DOM元素。prop()还会为函数传入两个参数:第一个参数就是该元素在匹配元素中的索引,第二个参数就是该元素propertyName属性当前的值。函数的返回值就是为该元素的propertyName属性设置的值。

用法二:

jQueryObject.prop( object )

以对象形式同时设置任意多个属性的值。对象object的每个属性对应propertyName,属性的值对应value。

注意:prop()函数的所有"设置属性"操作针对的是当前jQuery对象所匹配的每一个元素;所有"读取属性"的操作只针对第一个匹配的元素。
参数

请根据前面语法部分所定义的参数名称查找对应的参数。

参数 描述
propertyName String类型指定的属性名称。
value 可选/Object/Function类型指定的属性值,或返回属性值的函数。
object Object类型指定的对象,用于封装多个键值对,同时设置多项属性。
参数value可以是包括对象和数组在内的任意类型。

返回值

prop()函数的返回值是任意类型,返回值的类型取决于当前prop()函数执行的是"设置属性"操作还是"读取属性"操作。

如果prop()函数执行的是"设置属性"操作,则返回当前jQuery对象本身;如果是"读取属性"操作,则返回读取到的属性值。

如果当前jQuery对象匹配多个元素,返回属性值时,prop()函数只以其中第一个匹配的元素为准。如果该元素没有指定的属性,则返回undefined。

prop()和attr()的主要区别:prop()函数针对的是DOM元素(JS Element对象)的属性,attr()函数针对的是DOM元素所对应的文档节点的属性。详情请查看jQuery函数attr()和prop()的区别。

注意事项

1、如果通过prop()函数更改<input>和<button>元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改。

2、如果使用prop()函数操作表单元素的checked、selected、disabled等属性,如果该元素被选中(或禁用),则返回true,否则(意即HTML中没有该属性)返回false。

3、prop()函数还可以设置或返回DOM元素的Element对象上的某些属性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等属性。

4、在IE9及更早版本中,如果使用prop()函数设置的属性值不是一个简单的原始值(String、Number、Boolean),并且在对应的DOM元素被销毁之前,该属性没有被移除,则可能会导致内存泄漏问题。如果你只是为了存储数据,建议你使用data()函数,以避免内存泄漏问题。

示例&说明

以下面这段HTML代码为例:

<div id="n1">

    <p id="n2" class="demo test" data-key="UUID" data_value="1235456465">CodePlayer</p>

    <input id="n3" name="order_id" type="checkbox" value="1">

    <input id="n4" name="order_id" type="checkbox" checked="checked" value="2">

</div>

我们编写如下jQuery代码:
var $n2 = $("#n2");
// prop()操作针对的是元素(Element对象)的属性,而不是元素节点(HTML文档)的属性
document.writeln( $n2.prop("data-key") ); // undefined
document.writeln( $n2.prop("data_value") ); // undefined

document.writeln( $n2.prop("id") ); // n2
document.writeln( $n2.prop("tagName") ); // P
document.writeln( $n2.prop("className") ); // demo test
document.writeln( $n2.prop("innerHTML") ); // CodePlayer
document.writeln( typeof $n2.prop("getAttribute") ); // function

// prop()设置的属性也是针对元素(Element对象),因此也可以通过元素本身直接访问
$n2.prop("prop_a", "CodePlayer");
document.writeln( $n2[0].prop_a ); // CodePlayer
var n2 = document.getElementById("n2");
document.writeln( n2.prop_a ); // CodePlayer

// 以对象形式同时设置多个属性,属性值可以是对象、数组等任意类型
$n2.prop( { 
  prop_b: "baike",
  prop_c: 18,
  site: { name: "CodePlayer", url: "https://3water.com/" }
} );
document.writeln( $n2[0].prop_c ); // 18
document.writeln( $n2[0].site.url ); // https://3water.com/

// 反选所有的复选框(没选中的改为选中,选中的改为取消选中)
$("input:checkbox").prop("checked", function(index, oldValue){
  return !oldValue;
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
各种效果的jquery ui(接口)介绍
Sep 17 Javascript
JavaScript经典效果集锦
Jul 06 Javascript
游览器中javascript的执行过程(图文)
May 20 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
JS文字球状放大效果代码分享
Aug 19 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
jQuery实现获取元素索引值index的方法
Sep 18 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
JavaScript指定断点操作实例教程
Sep 18 Javascript
少女风vue组件库的制作全过程
May 15 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 #Javascript
jQuery的position()方法详解
Jul 19 #Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 #Javascript
javascript中mouseover、mouseout使用详解
Jul 19 #Javascript
javascript实现的简单计时器
Jul 19 #Javascript
javascript中setInterval的用法
Jul 19 #Javascript
js中跨域方法原理详解
Jul 19 #Javascript
You might like
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
短信提示使用 特效
2007/01/19 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
requireJS使用指南
2016/04/27 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
服务标语大全
2014/06/18 职场文书
IT工程师岗位职责
2014/07/04 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
社会实践活动报告
2015/02/05 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS