15-3自定义数据属性操作-在元素中存储数据

15-3自定义数据属性操作-在元素中存储数据

部培屉碴闹枷取男灌兴咕虾羞


data():读取元素中属性名以data-开始的自定义数据,可以省略data-前缀

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>3.在元素中存储数据:data()</title>
	</head>
	<body>
		<img src="../images/boy.jpeg" width="200" alt="倒霉熊" title="卡通人物" id="pic" data-job="动画片角色" />
	</body>
</html>
<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	var res = $('#pic').data('job')
	console.log(res)
</script>

执行:

15-3自定义数据属性操作-在元素中存储数据第1张

注意不要加前缀,加前缀无法拿到值

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

执行:

15-3自定义数据属性操作-在元素中存储数据第2张

使用attr()需要完整的前缀

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

执行:

15-3自定义数据属性操作-在元素中存储数据第1张


如果是动态设置的自定义属性,省略前缀是获取不到的

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').data('data-course','php开发')
	var res = $('#pic').data('course')
	console.log(res)
</script>

执行:

15-3自定义数据属性操作-在元素中存储数据第2张

要获取动态设置的属性必须使用完整的名称

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').data('data-course','php开发')
	var res = $('#pic').data('data-course')
	console.log(res)
</script>

执行:

15-3自定义数据属性操作-在元素中存储数据第5张


data()能获取元素上的原生属性吗?无法读取

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

执行:

15-3自定义数据属性操作-在元素中存储数据第2张


但是支持动态设置title属性,仅限于脚本中使用,原始值并未发生变化

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

执行:

15-3自定义数据属性操作-在元素中存储数据第7张


同样,data()也有一个对应的removeData()用来删除自定义或由它创建的属性

仅删除临时创建的,原始值不受影响

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

执行,可以看到删除的是设置的hello,原始的卡通人物并没有被删除

15-3自定义数据属性操作-在元素中存储数据第8张


删除临时创建的data-course

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').data('data-course','php开发')

	var res = $('#pic').removeData('data-course')  //仅删除临时创建的
	var res = $('#pic').data('data-course')  //仅删除临时创建的
	console.log(res)
</script>

执行:

15-3自定义数据属性操作-在元素中存储数据第9张


原始标签自带的自定义属性中删除不了的

<script type="text/javascript" src="../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript">
	$('#pic').data('data-course','php开发')

	var res = $('#pic').removeData('data-job')  //仅删除临时创建的
	var res = $('#pic').data('job')  //仅删除临时创建的
	console.log(res)
</script>

执行:

15-3自定义数据属性操作-在元素中存储数据第10张


建泡晴桅挪孙庐伯晤钩镐翟脐