博客列表 >0404jQuery的Dom操作

0404jQuery的Dom操作

田亢的博客
田亢的博客原创
2018年04月08日 10:09:29510浏览
  1. 属性与自定义属性操作

读取器,设置器
1. 有一些函数,可以根据参数的数量不同,执行不同的功能,返回不同的值,类似于功能重载
2. 传入一个参数,执行读取操作getter,返回该参数的当前值,叫:读取器/获取器
3. 传入二个参数,执行赋值操作setter,修改当前参数的值,叫:设置器/修改器

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>1.属性与自定义属性操作</title>
</head>
<body>
	<img src="../images/zly.jpg" width="200" alt="美女" title="明星" id="pic" data-nation="中国">
</body>
</html>
<script type="text/javascript" src="../0402源码/js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	
	//必须传参  不传参数会报错
	// var res = $('img').attr()

	//单参数为获取:当前属性的值
	var res = $('#pic').attr('src')
    console.log(res)

	//双参数为获取,第一个是属性名,第二个是要设置的新值
	// $('#pic').attr('src', '../images/gyy.jpg')
	// $('#pic').attr('style', 'border-radius: 50%;box-shadow:2px 2px 2px #888')

	//attr()可以获取到元素的自定义属性
	// var res = $('#pic').attr('data-nation')

	//attr()的属性值,还支持回调函数
	// $('#pic').attr('width', function(){return 100+50})
	//注意: 回调返回的数值类型,会自动转为字符类型再赋值给width属性
	// var res = $('#pic').attr('width')

	//2. removeAttr():删除元素的属性
	//删除图片的内联样式属性style
	// $('#pic').removeAttr('style')
	//可以删除多个属性,多个属性之间用空格分开,返回当前元素的状态
	// var res = $('#pic').removeAttr('alt title data-nation')
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.元素固有属性的操作

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>2.元素固有属性的操作</title>
</head>
<body>
	<img src="../images/fbb.jpg" width="200" alt="美女" title="明星" id="pic" data-nation="中国">
</body>
</html>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	//1.prop():仅能获取元素的固有属性
	//获取固有属性alt,title
	// var res = $('#pic').prop('alt') //美女
	// var res = $('#pic').prop('title') //明星


	//获取自定义属性data-nation,返回undefined,获取不到
 	// var res = $('#pic').prop('data-nation')


	//但是如果使用prop()进行动态设置自定义属性后,就可以正常获取到
	var res = $('#pic').prop('data-nation','中国山东')

    //此时查看元素,发现自定义属性并未发生变化,所以这种设置对元素无影响
	//此时再次查看到的自定义属性值,只是存在于当前脚本的一个临时数据
	var res = $('#pic').prop('data-nation')
    console.log(res)

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

	//不能同时移除多个属性,所以此条语句无效
	// var res = $('#pic').removeProp('alt data-nation')

	//删除自定义属性data-nation
	// var res = $('#pic').removeProp('data-nation')

	//删除原生固有的属性alt,删除失败
	// var res = $('#pic').removeProp('alt')

	//用removeAttr()删除原生属性alt, 删除成功
	// var res = $('#pic').removeAttr('alt')

	//所以,如果要用removeProp()删除原生属性,大多情况下将值设置为false即可
	//最终由用户脚本自行处理
	// var res = $('#pic').prop('alt',false)
	// var res = $('#pic').prop('alt')

 
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

3.在元素中存储数据

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>3.在元素中存储数据</title>
</head>
<body>
<img src="../images/peter.jpg" width="200" alt="php中文网" title="朱老师" id="pic" data-job="php中文网朱老师">

</body>
</html>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	//data():读取元素中属性名以data-开始的自定义数据,可以省略data-前缀

	var  res = $('#pic').data('job')//php中文网朱老师
	//如果用之前的attr()方法必须写出完整的属性名
	var res = $('#pic').attr('data-job')//php中文网朱老师

	//data()也是一个自带读取器和设置器的方法
	$('#pic').data('data-course', 'php项目开发课程')

	//如果是动态设置的自定义属性,省略前缀是获取不到的
	var res = $('#pic').data('course') //undefined

        //需要加上前缀
	var res = $('#pic').data('data-course') //php项目开发课程

	//data()能获取元素上的原生属性吗?无法读取
	var res = $('#pic').data('title') //undefined

	//但是支持动态设置title属性,仅限于脚本中使用,原始值并未发生变化
	var res = $('#pic').data('title','hello')

    //现在就可以在脚本中读取了title的值了,尽管这个值与原生的alt值并不相同
	var res = $('#pic').data('title')
    console.log(res) //hello

	//同样,data()也有一个对应的removeData()用来删除自定义或由它创建的属性
 	var res = $('#pic').removeData('title')//仅删除临时创建的,原值不受影响
	var res = $('#pic').removeData('data-course')  //仅删除临时创建的
	// var res = $('#pic').data('data-course')  //仅删除临时创建的

	//原始标签自带的自定义属性中删除不了的
	// var res = $('#pic').removeData('data-job')
	// var res = $('#pic').data('job')

 
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

4.设置元素的类样式

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>4.设置元素的类样式</title>
	<style type="text/css">
	.circle {border-radius: 50%}
	.shadow {box-shadow: 3px 3px 2px #808080}
	</style>
</head>
<body>
	<img src="../images/xln.jpg" width="200" id="pic">
</body>
</html>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	/*设置元素样式的方法
	1.通过设置标签的class属性,来指定要应用的类样式规则
	2.直接设置标签的style属性,来对当前元素进行样式重置*/

	//1.应用类样式:addClass()
	$('#pic').addClass('circle')
	$('#pic').addClass('circle shadow')

	//2.移除类样式:removeClass()
	$('#pic').removeClass('circle')
	$('#pic').removeClass('shadow')
	$('#pic').removeClass('circle shadow')

	//3.样式自动切换:toogleClass()
	//如果当前元素没有添加类样式,那么自动添加上它指定的类样式
	$('#pic').toggleClass('circle shadow')

	//如果当前元素已经被添加上类样式,那么它就会移除掉这个类样式
	//先给元素添加上类样式
	$('#pic').addClass('circle')
	$('#pic').addClass('circle shadow')

	//现在执行的就是移除操作
	$('#pic').toggleClass('circle shadow')

//总结一些就是 有了就删除 没有就添加

	//4.查询类样式: hasClass()
	var res = $('#pic').hasClass('circle shadow') //false
	$('#pic').addClass('circle shadow') 
	var res = $('#pic').hasClass('circle shadow') //true

	if ($('#pic').hasClass('circle shadow')) {
		$('#pic').removeClass('circle shadow')
	} else {
		$('#pic').addClass('circle shadow') 
	}

	//控制台查看结果
	console.log(res)
	

</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例


5.设置内联样式

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>5.设置内联样式css()</title>
	<style type="text/css">
		.box1 {
			width: 300px;
			height: 300px;
			background-color: wheat;

			position: relative;

		}

		.box2 {
			width: 100px;
			height: 100px;
			background-color: coral;

			position: absolute;
			top: 50px;
			left: 100px;
		}
	</style>
</head>
<body>
	<img src="../images/jsy.jpg">

	<div class="box1">
	<div class="box2"></div>
	</div>
</body>
</html>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	//css()方法与attr()方法很相似,也是自带读到与设置特征
	//根据参数数量确定要执行的操作,一个参数是读取,二个参数是设置
	//功能相当于读到或设置当前元素的style属性的值,其实就是内联样式

	//1.设置样式 css(name,value)
	var res = $('img').css('width',200)
	var res = $('img').css('border-radius', '10%')
	var res = $('img').css('box-shadow', '3px 3px 3px #888')

	var res = $('img').css({
		'width': '200',
		'border-radius': '10%',
		'box-shadow': '3px 3px 3px #888'
	})

	//2.读取样式 css(name),返回的都是字符串类型
	var res = $('img').css('box-shadow')
	var res = $('img').css('width')

	//因为返回的是字符串,所以对于宽高等数据,如果要计算,就必须先转为数值型
	var res = parseInt($('img').css('width'), 10) //200
	res += 50
	var res = $('img').css('width',res+'px')

	//可以看出这样的操作是很麻烦的,但是宽高计算又使用的非常频繁
	//所以jquery针对宽高样式有二个专用方法: width()和height()

	//3.width()和height()方法
	//将图片宽高设置为200,单位默认为px
	var res = $('img').width(200)
	var res = $('img').width('200')
	var res = $('img').width('200px')
	var res = $('img').width('200pt')

	//等价于:
	var res = $('img').css('width',200)

	//设置宽高就更简单了,支持运算符的简写
	var res = $('img').width('+=100')
	var res = $('img').width()  //300
	//等价于:
	var res = $('img').css('width','+=50')
	var res = $('img').width()  //250

	//height()高度方法,用法与width()完全一致,请大家自行测试

	// 除了宽高之年,获取元素当前的位置也是经常要用到的操作,jquery也定义了快捷方法

	//4.获取元素的位置:offset(),返回的是一个对象
	var res = $('img').offset()
	//查询距离左边和顶部的偏移量
	var res = $('img').offset().left
	var res = $('img').offset().top
	//可以看到这个操作反映的是元素在普通文档流的位置

	//如果元素采用了绝对定位,那么如何查看它在父级区块中的偏移量呢?
	//5.查看绝对定位元素的偏移量: position()
	var res = $('.box2').position().left
	var res = $('.box2').position().top

	//offset()和position()方法仅适用于页面中的可视元素,并且仅能获取,不能设置
	//类似的还有scrollLeft()返回水平滚动条位置,scrollTop()返回垂直滚动条的位置,大家自行测试



	//控制台查看结果
	console.log(res)
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例










声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议