一 jQuery DOM操作
1 jQuery元素属性操作
这里主要是两个方法
prop( ) 操作元素固有属性
prop( 属性名, 属性值) 设置<br /> prop( 属性名) 获取
attr( ) 操作元素自定义的属性
attr(属性名,属性值) 设置<br /> attr(属性名) 获取<br />prop更适用于表单属性, 如:disabled / checked / selected 等
<body>
<a href="http://www.baidu.com" title="百度一下">百度</a>
<input type="checkbox"> 选择
<div index="1" data-index="2" >我是div</div> <!-- 自己加的属性 index="1" data-index="2" -->
<script>
//prop 一般用于操作元素固有的属性
console.log($('a').attr('href')); //一个参数就是获取
console.log($('a').prop('href'));
//attr一般用于操作给元素自定义的属性
console.log($('div').attr('index'));
console.log($('div').prop('index')); //获取不到index属性的值
//将超链接跳转的路径改成中地的官网
$('a').prop('href','https://www.mapgis.com/') //两个参数就是设置
//将复选框默认选中
$('input').prop('checked','checked')
//将div中data-index的值改成10
$('div').attr('data-index','10')
</script>
</body>
2 jQuery文本操作
主要涉及三个方法
html( )
html() 获取<br /> html(内容) 设置
text( )
text() 获取<br /> text(内容) 设置
val( )
val() 获取<br /> val(内容) 设置<br />html相当于原生的innerHTML<br />text相当于原生的innerText<br />val相当于原生的value
语法
// 不带参数, 获取值
$('选择器').html()
// 带参数, 设置值
$('选择器').html('值')
示例
<div>
<span>中国移动</span>
</div>
<input type="text" name="" id="">
<script>
//1,html():操作元素div标签体的内容
console.log($('div').html());//一个参数是获取
$('div').html('<h1>中国联通</h1>') //两个参数就是设置
//2,text():操作元素div标签体的内容(纯文本)
console.log($('div').text());
$('div').text('<h1>中国联通</h1>')//没有样式,h1标签就变成了纯文本
//3,val():操作input文本框的内容
console.log($('input').val());
$('input').val('王五')
</script>
3 jQuery元素操作(操作节点)
1) 创建元素
$('字符串类型的元素')
//创建一个li元素
var li = $('<li>中国联通</li>')
console.log(li);
2) 添加元素
有4个方法
- append() - 在被选元素的内部插入子元素, 在最后
- prepend() - 在被选元素的内部插入子元素, 在最前
- after() - 在被选元素的外部插入兄弟元素, 在后面
before() - 在被选元素的外部插入兄弟元素, 在前面
<body>
<ul>
<li>中国移动</li>
</ul>
<div>我是div</div>
<script>
//创建一个li元素
var li = $('<li>中国联通</li>')
console.log(li);
//添加
$('ul').append(li)//在子元素的后面添加
//添加到子元素的前面
var li1 = $('<li>中国电信</li>')
$('ul').prepend(li1)
</body>
3) 删除元素
如需删除元素和内容,一般可使用以下两个方法:
remove() - 删除被选元素(及其子元素)
empty() - 从被选元素中删除子元素
//删除
$('div').remove()//可以直接用要删除的元素区调用
二 jQuery 效果
1 显示与隐藏
三个方法
show( ) 显示
- hide( ) 隐藏
- toggle( ) 切换
语法
// 不带参数, 直接显示
$('选择器').show()
// 带一个参数, 在time(毫秒)内显示
$('选择器').show(time)
// 带二个参数, 在time(毫秒)内显示, 显示完后执行回调
$('选择器').show(time, callback)
示例
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<style>
div{
width: 150px;
height: 300px;
background: pink;
}
</style>
</head>
<body>
<button>显示</button>
<button>隐藏</button>
<button>切换</button>
<div></div>
<script>
//show可以不带参数,没有动画效果
//可以带一个参数,动画执行的时间
//后面还可以跟一个匿名函数(回调函数),可以在动画完成之后执行
//显示
$('button').eq(0).click(function(){
$('div').show(500,function(){
alert(1)
})
})
//隐藏
$('button').eq(1).click(function(){
$('div').hide(500)
})
//切换
$('button').eq(2).click(function(){
$('div').toggle(500)
})
</script>
</body>
2 滑入滑出
三个方法
- slideDown( ) 下拉滑动
- slideUp( ) 上拉滑动
- slideToggle( ) 切换
语法跟show()一样
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<style>
div{
width: 150px;
height: 300px;
background: pink;
}
</style>
</head>
<body>
<button>下拉滑动</button>
<button>上拉滑动</button>
<button>切换</button>
<div></div>
<script>
//slideDown可以不带参数,没有动画效果
//可以带一个参数,动画执行的时间
//后面还可以跟一个匿名函数(回调函数),可以在动画完成之后执行
//显示
$('button').eq(0).click(function(){
$('div').slideDown(1000,function(){
alert(111)
})
})
//上拉滑动
$('button').eq(1).click(function(){
$('div').slideUp(1000)
})
//切换
$('button').eq(2).click(function(){
$('div').toggle(500)
})
</script>
</body>
3 淡入淡出
四个方法
- fadeIn( ) 淡入
- fadeOut( ) 淡出
- fadeToggle( ) 切换
fadeTo( ) 透明度
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<style>
div{
width: 150px;
height: 300px;
background: pink;
display: none;
}
</style>
</head>
<body>
<button>淡入</button>
<button>淡出</button>
<button>切换</button>
<button>修改透明度</button>
<div></div>
<script>
//淡入
$('button').eq(0).click(function(){
$('div').fadeIn(1000)
})
//淡出
$('button').eq(1).click(function(){
$('div').fadeOut(1000)
})
//切换
$('button').eq(2).click(function(){
$('div').fadeToggle(1000)
})
//透明度
$('button').eq(3).click(function(){
$('div').fadeTo(1000,0.5)//速度和透明度必须要写!!! 第一个参数是透明度变化的速度
})
</script>
</body>
4 停止动画
stop( )
如果不停止动画就会出现存在时间上的延迟(需要前面动画执行玩才能继续执行后面的动画), 可以使用stop停止动画
注意: stop一定要加在动画的前面,表示要先停止之前的正在执行到动画,然后再开始现在的动画<script>
$(function() {
$('.wrap li').hover(function(){
//鼠标进入的时候,其他的li标签透明度:0.5
$(this).siblings().stop().fadeTo(500,0.5)
},function(){
// 鼠标离开,其他li 透明度改为 1
$(this).siblings().stop().fadeTo(500,1)
})
});
</script>
三 jQuery 遍历
each( )
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
</head>
<body>
<div>1</div><!-- red -->
<div>2</div><!-- green -->
<div>3</div><!-- purple -->
<script>
//$('div').css('color','red')
//如果需要针对同一类的元素做不同的操作,就需要用到遍历元素
//最简单的遍历
$('div').each(function(){
console.log(this);//this就代表里面的每一个dom对象
})
//完整的遍历方式
$('div').each(function(i,e){//这两个参数名字随便起,但是第一个永远代表索引,第二个永远代表元素
console.log(i,e);
})
//完成需求
var arr = ['red','green','purple']
$('div').each(function(i,e){
//拿到每一个div设置样式
$(e).css('color',arr[i])
})
</script>
</body>
$.each( )
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<title>Document</title>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<script>
//$.each(要遍历的对象,回调函数)
$.each($('div'),function(i,e){
console.log(i,e);
})
</script>
</body>
字面量对象遍历
<script>
//$.each可以直接遍历字面量对象,i代表属性名,e代表属性值
$.each({
name:'张三',
age:23
},function(i,e){
console.log(i);//属性名 name age
console.log(e);//属性值 张三 23
})
</script>
</body>
四 事件
绑定 on
在选择元素上绑定一个或多个事件的事件处理函数。
可以绑定1个或者多个事件处理程序
可以实现动态绑定<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<style>
div{
width: 100px;
height: 100px;
background: pink;
}
</style>
</head>
<body>
<div></div>
<ul>
<p>111</p>
<p>222</p>
<p>333</p>
</ul>
<script>
//1,之前注册事件方式: 一次只能添加一个事件
/* $('div').click(function(){
$(this).css('background','red')
})
$('div').mouseenter(function(){//鼠标指针穿过事件
$(this).css('background','purple')
}) */
//2,on:一次可以添加若干个事件
$('div').on({
click : function(){
$(this).css('background','red')
},
mouseenter :function(){
$(this).css('background','purple')
}
})
//3.on可以实现动态绑定
//这个传统的绑定方式只能对于已经存在的元素进行绑定事件,如果这个p标签是动态生成的,那就没办法实现
/* $('ul p').click(function(){
alert($(this).text())
}) */
$('ul').on('click','p',function(){//一定要注意,调用的对象是p的父元素 第二个参数传选择器,将来就会选择ul下面的p元素
alert($(this).text())
})
</script>
</body>
解绑 off
在选择元素上移除一个或多个事件的事件处理函数。
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<style>
div{
width: 100px;
height: 100px;
background: pink;
}
</style>
</head>
<body>
<div></div>
<script>
//on:一次可以添加若干个事件
$('div').on({
click : function(){
$(this).css('background','red')
},
mouseenter :function(){
$(this).css('background','purple')
}
})
//off
//$('div').off() //解除div上的所有事件
$('div').off('click') //解除div上的点击事件
</script>
</body>