15-2元素原生固有属性的操作prop()和removeProp()

15-2元素原生固有属性的操作prop()和removeProp()

某悸垢绅惫厘同冒圈膘瘸氮枚


1.prop():仅能获取元素的固有属性
获取固有属性alt,title

获取title:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<img src="../images/fbb.jpg" width="200" alt="美女" title="明星" id="pic" data-nation="中国" />
	</body>
</html>
<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	var res=$('#pic').prop('title')
	console.log(res)
</script>

15-2元素原生固有属性的操作prop()和removeProp()第1张

获取alt

js代码:

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	var res=$('#pic').prop('alt')
	console.log(res)
</script>

执行:

15-2元素原生固有属性的操作prop()和removeProp()第2张


获取自定义属性data-nation,返回undefined,获取不到

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	var res=$('#pic').prop('data-nation')
	console.log(res)
</script>

执行:

15-2元素原生固有属性的操作prop()和removeProp()第3张


但是使用prop()进行动态设置自定义属性后,就可以正常获取到

再次查看到的自定义属性值,只是存在于当前脚本的一个临时数据

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').prop('data-nation','中国山东')
	var res=$('#pic').prop('data-nation')
	console.log(res)
</script>

执行:

15-2元素原生固有属性的操作prop()和removeProp()第4张


2.removeProp()

这个方法与removeAttr()有二点不同:
1.不支持空格分隔的属性列表字符串,即一次只能删除一个属性
2.它不能删除原生属性,如果真要删除,只要将值设为false即可

不能同时移除多个属性,所以此条语句无效

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').removeProp('alt data-nation')
	console.log($('#pic'))
</script>

执行,alt并没有被删除:

15-2元素原生固有属性的操作prop()和removeProp()第5张


不能删除自定义属性data-nation

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').removeProp('data-nation')
	var res=$('#pic').attr('data-nation')
	console.log(res)
</script>

执行。data-nation并没有被删除

15-2元素原生固有属性的操作prop()和removeProp()第6张


删除原生固有的属性alt,删除失败

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').removeProp('alt')
	var res=$('#pic').attr('alt')
	console.log(res)
</script>

执行,alt属性并没有被删除:

15-2元素原生固有属性的操作prop()和removeProp()第7张


所以,如果要用removeProp()删除原生属性,大多情况下将值设置为false即可
最终由用户脚本自行处理

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').prop('alt',false)
	var res=$('#pic').attr('alt')
	console.log(res)
</script>

执行:

15-2元素原生固有属性的操作prop()和removeProp()第8张


稗瘸密完薄典充房问勒盗际室