详解jQuery中的prop()使用方法


Posted in jQuery onJanuary 05, 2020

prop()定义和用法

prop() 方法设置或返回被选元素的属性和值。

当该方法用于返回属性值时,则返回第一个匹配元素的值。

当该方法用于设置属性值时,则为匹配元素集合设置一个或多个属性/值对。

注意:prop() 方法应该用于检索属性值,例如 DOM 属性(如 selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected)。

提示:如需检索 HTML 属性,请使用 attr() 方法代替。

提示:如需移除属性,请使用 removeProp() 方法。

prop() 语法

返回属性的值:

$(selector).prop(property)

设置属性和值:

$(selector).prop(property,value)

使用函数设置属性和值:

$(selector).prop(property,function(index,currentvalue))

设置多个属性和值:

$(selector).prop({property:value, property:value,...})

参数 描述
property 规定属性的名称。
value 规定属性的值。
function(index,currentvalue) 规定返回要设置的属性值的函数。 index - 检索集合中元素的 index 位置。 currentvalue - 检索被选元素的当前属性值。

实例

添加并移除名为 "color" 的属性:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木</title>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
	$("button").click(function(){
		var $x = $("div");
		$x.prop("color","FF0000");
		$x.append("color 属性值为: " + $x.prop("color"));
		$x.removeProp("color");
		$x.append("<br>现在 color 属性值为: " + $x.prop("color"));
	});
});
</script>
</head>
<body>

<button>添加和删除属性</button>
<br><br>
<div></div>

</body>
</html>

prop() 和 attr() 之间的不同

prop() 和 attr() 可能返回不同的值。本实例演示了当用于返回复选框的 "checked" 状态时的不同。

在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参数和用法也几乎完全相同。

但不得不说的是,这两个函数的用处却并不相同。下面我们来详细介绍这两个函数之间的区别。

1、操作对象不同
很明显,attr和prop分别是单词attribute和property的缩写,并且它们均表示"属性"的意思。

不过,在jQuery中,attribute和property却是两个不同的概念。attribute表示HTML文档节点的属性,property表示JS对象的属性。

<!-- 这里的id、class、data_id均是该元素文档节点的attribute -->
<div id="message" class="test" data_id="123"></div>

<script type="text/javascript">
// 这里的name、age是Person的property
var Person = { name: "小明", age: 18};
</script>

在jQuery中,prop()函数的设计目标是用于设置或获取指定DOM元素(指的是JS对象,Element类型)上的属性(property);attr()函数的设计目标是用于设置或获取指定DOM元素所对应的文档节点上的属性(attribute)。

2、应用版本不同
attr()是jQuery 1.0版本就有的函数,prop()是jQuery 1.6版本新增的函数。毫无疑问,在1.6之前,你只能使用attr()函数;1.6及以后版本,你可以根据实际需要选择对应的函数。

3、用于设置的属性值类型不同
由于attr()函数操作的是文档节点的属性,因此设置的属性值只能是字符串类型,如果不是字符串类型,也会调用其toString()方法,将其转为字符串类型。

prop()函数操作的是JS对象的属性,因此设置的属性值可以为包括数组和对象在内的任意类型。

4、其他细节问题
在jQuery 1.6之前,只有attr()函数可用,该函数不仅承担了attribute的设置和获取工作,还同时承担了property的设置和获取工作。例如:在jQuery 1.6之前,attr()也可以设置或获取tagName、className、nodeName、nodeType等DOM元素的property。

直到jQuery 1.6新增prop()函数,并用来承担property的设置或获取工作之后,attr()才只用来负责attribute的设置和获取工作。

此外,对于表单元素的checked、selected、disabled等属性,在jQuery 1.6之前,attr()获取这些属性的返回值为Boolean类型:如果被选中(或禁用)就返回true,否则返回false。

但是从1.6开始,使用attr()获取这些属性的返回值为String类型,如果被选中(或禁用)就返回checked、selected或disabled,否则(即元素节点没有该属性)返回undefined。并且,在某些版本中,这些属性值表示文档加载时的初始状态值,即使之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会发生改变。

因为jQuery认为:attribute的checked、selected、disabled就是表示该属性初始状态的值,property的checked、selected、disabled才表示该属性实时状态的值(值为true或false)。

因此,在jQuery 1.6及以后版本中,请使用prop()函数来设置或获取checked、selected、disabled等属性。对于其它能够用prop()实现的操作,也尽量使用prop()函数。

<button>按钮</button>
  <input type="checkbox" name="" id="" checked="checked">
  <script src="jquery.js"></script>
  <script>
    // $('button').on('click',function(){

    // });
    // var r = $('input');
    $('button').on('click',function(){
      console.log(11)
      if ($('input').prop('checked')) {
        $('input').prop('checked',false);
      }else{
        $('input').prop('checked',true);
      }
    })
  </script>

// attr / prop
// attr ==> getAttribute() / setAttribute()
// 用于操作 自定义的属性,对于DOM对象自身的布尔值类型的属性,只能
// 通过这个两个方法来设置或者读取默认值,而不能动态改变值
//
// prop ==> dom.checked = true;
// 对于 布尔值的属性(selected/checked/diabled) 都需要通过直接访问属性
// 方式来操作(点语法、[])

大家都知道原生js可以获取匹配元素的内部html和外部html,内部是innerHTML,外部是outerHTML,原生js的dom对象是存在这两个属性的,

document.getElementById("linkType").outerHTML;

如果用jQuery如何获取匹配元素(包括自身元素的html)呢?

既然存在这个属性,我们就可以用$("#linkType").prop("outerHTML")来获取;

可以通过$("#linkType").prop("outerHTML",outerHTML)赋值来改变outerHTML的内容;

值得注意的是jQuery的attr是获取不到这个属性值的。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木(3water.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
	$("button").click(function(){
		$("#p1").html("attr('checked'): " + $("input").attr('checked')
					 + "<br>prop('checked'): " + $("input").prop('checked'));
	});
});
</script>
</head>
<body>

<p><b>注意:</b>确认或取消选中该复选框,然后单击按钮刷新内容。</p>
<button>查看attr() 和 prop() 的值</button>
<br><br>
<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check me</label>
<p id="p1"></p>

</body>
</html>

jQuery removeProp() 方法

定义和用法
removeProp() 方法移除由 prop() 方法设置的属性。

注意:不要使用该方法来移除诸如 style、id 或 checked 之类的 HTML 属性。请使用 removeAttr() 方法代替。

语法

$(selector).removeProp(property)

参数 描述
property 规定要移除的属性的名称。

实例
添加并移除名为 "color" 的属性:

$("button").click(function(){
  var $x = $("div");
  $x.prop("color","FF0000");
  $x.append("The color 属性: " + $x.prop("color"));
  $x.removeProp("color");
});

完整实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木(3water.com)</title>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
	$("button").click(function(){
		var $x = $("div");
		$x.prop("color","FF0000");
		$x.append("color 属性值为: " + $x.prop("color"));
		$x.removeProp("color");
		$x.append("<br>现在 color 属性值为: " + $x.prop("color"));
	});
});
</script>
</head>
<body>

<button>添加和删除属性</button>
<br><br>
<div></div>

</body>
</html>

jQuery removeAttr() 方法

定义和用法
removeAttr() 方法从被选元素移除一个或多个属性。

语法

$(selector).removeAttr(attribute)

参数 描述
attribute 必需。规定要移除的一个或多个属性。如需移除若干个属性,请使用空格分隔属性名称。

实例
从所有的 <p> 元素移除样式属性:

$("button").click(function(){
  $("p").removeAttr("style");
});

完整实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木 3water.com</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
	$("button").click(function(){
		$("p").removeAttr("style");
	});
});
</script>
</head>
<body>

<h1>这是一个标题</h1>
<p style="font-size:120%;color:red">这是一个段落。</p>
<p style="font-weight:bold;color:blue">这是另一个段落。</p>
<button>移除所有P元素的样式属性</button>

</body>
</html>

好了,这篇关于jquery prop()的文章就介绍到这,希望大家以后多多支持三水点靠木。

jQuery 相关文章推荐
jquery实现图片上传前本地预览
Apr 28 jQuery
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jQuery正则验证注册页面经典实例
Jun 10 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
基于jquery.page.js实现分页效果
Jan 01 jQuery
jQuery中each方法的使用详解
Mar 18 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
jQuery实现雪花飘落效果
Aug 02 jQuery
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
jQuery 选择器用法基础入门示例
Jan 04 #jQuery
jQuery实现的图片点击放大缩小功能案例
Jan 02 #jQuery
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 #jQuery
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 #jQuery
JQuery常用选择器功能与用法实例分析
Dec 23 #jQuery
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 #jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 #jQuery
You might like
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
解析php入库和出库
2013/06/25 PHP
php分页函数示例代码分享
2014/02/24 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
js随机生成一个验证码
2017/06/01 Javascript
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
拖鞋店创业计划书
2014/01/15 职场文书
临床护士自荐信
2014/01/31 职场文书
教师学习培训邀请函
2014/02/04 职场文书
个人承诺书怎么写
2014/05/24 职场文书
总经理岗位职责范本
2015/04/01 职场文书
工程服务质量承诺书
2015/04/29 职场文书
PyTorch的Debug指南
2021/05/07 Python
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
Python代码实现双链表
2022/05/25 Python