作业:密码加强验证 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
onload = function () {
//为文本框注册失去焦点事件,失去焦点时,进行密码验证
document.getElementById('txtPwd').onblur = function () {
var msg = this.value;
//获取提示框
var msgPwd = document.getElementById('msgPwd');
if (msg.length < 6) {
msgPwd.innerText = '弱爆了!!!';
} else
{
//纯字符:弱;两种混合:中;三种混合:强。
//if (/^[a-zA-Z]+$/.test(msg)
// || /^[0-9]+$/.test(msg)
// || /^[!@#$%^&*()]+$/.test(msg)
//)
//{
// msgPwd.innerText = "弱";
//}
var pwd = 0;
if (/[a-zA-Z]/.test(msg))
{
pwd++;//有一个字母
}
if (/[0-9]/.test(msg)) {
pwd++;//有一个数字
}
if (/[!@#$%^&*()]/.test(msg)) {
pwd++;//有一个特殊字符
}
switch (pwd) {
case 1: msgPwd.innerText = "弱";
break;
case 2: msgPwd.innerText = "中";
break;
case 3: msgPwd.innerText = "强";
break;
default:
}
}
};
};
</script>
</head>
<body>
<input type="text" id="txtPwd" name="name" value="" />
<span id="msgPwd"></span>
</body>
</html> 【2017.12.23--JQuery 01】 第一:什么是JQuery
1、当前应用非常广泛的一个js类库,封装了大量方法,可以快速完成常用功能;
2、在使用前需要先引入jquery.js文件,才可以使用这个库中的成员;
3、$对象是jquery对象的简写方式,一般都使用$而不书写jquery,简便快捷。 第二:为什么使用它?
1、官方网址:http://jquery.com/,很好地解决了浏览器兼容问题;
2、体积小,使用方便(Write Less,Do More)
3、链式编程,隐式迭代,插件丰富,开源,免费
4、注意:只是为常用操作提供了方法,并不能实现所有操作,如果没有实现的操作,还需要手写js
已经在vs的项目框架中集成了jquery 第三:主要功能
1、对象处理
2、属性、css
3、选择器、筛选
4、文档处理
5、事件
6、效果
7、ajax
8、工具 第四:具体实现
1、基本选择器
使用$('选择器')符号进行筛选,用于获取页面上的标签,返回一个jq对象
id选择器:#id
元素选择器:标签
类选择器:.class
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>//使用 JQuery 必需引入jquery库文件
<script>
onload = function () {
//jquery对象:本质就是DOM的一个数组
//js对象;dom对象:操作HTML的对象
//通过jquery选择器得到的都是jquery对象,可以使用juerqy提供的方法
$('#btnShow').click = function () {
}
};
</script>
</head>
<body>
<input type="button" name="name" id="btnShow" value="" />
</body>
</html> 2、属性操作
用于对标签元素的属性进行操作
获取属性值:attr(属性)
设置属性值:attr(属性,值)
如果是操作标签的值可以简写为:text(),html()
如果是操作控件的值可以简写为:val()
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
</head>
<body>
<input type="button" id="btnShow" name="name" value="显示" />
<img src="data:images/1.jpg" />
<script>
//操作属性
//获取属性的值;只写第一个参数,属性的名字
alert($('#btnShow').attr('value'));
//设置属性的值:写两个参数,第一个参数表示属性的名字,第二个表示值
$('#btnShow').attr('value', "Hello World");
//prop表示html的原有属性,attr而表示扩展属性
//如:img的src操作使用prop,2而href操作使用attr
$('#img').attr('href', 'abc');
//移除属性
$('#btnShow').removeAttr('value');
</script>
</body>
</html> 3、事件注册处理程序
方式一: bind(事件类型,处理函数)
方式二:事件类型(处理函数)
事件类型与dom的相同,去掉on前缀
卸载事件处理程序
unbind();//移除所有事件处理程序
unbind(‘click’);//移除所有的click事件处理程序
unbind('click',函数名称);//移除click事件的指定名称的处理函数,这种方法无法移除匿名函数
说明:dom事件不支持多播,而jquery事件支持多播
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
</head>
<body>
<input type="button" id="btnShow" name="name" value="显示" />
<script>
alert( $('#btnShow').attr('value'));
////对于value属性的一种简写操作
//alert($('#btnShow').val());
//为按钮绑定点击事件
$('#btnShow').click(function () {
alert(this.value);//this是dom对象,不能调用jquery的成员
});
//dom的事件注册:一个事件只能注册一个处理函数,不支持多播
document.getElementById('btnShow').onclick = function () {
alert(1);
};
document.getElementById('btnShow').onclick = function () {
alert(2);
};
//jquery事件注册:支持多播,一个事件可以指定多个处理函数
$('#btnShow').click(function () {
alert(3);
});
$('#btnShow').click(function () {
alert(4);
});
</script>
</body>
</html> 4、页面加载事件
js方式:window.onload=fn;
jq方式:$(document).ready(fn);->可简写为$(fn);
区别一:window.onload表示页面所有资源加载完成后才会被触发执行;$(fn)表示只要文档结构加载完成后就会执行,即所有标签加载完成
区别二:window.onload重复赋值会被覆盖,即不支持多播委托;$(fn)可以添加多个事件处理程序,即在jq中定义的事件支持多播
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
//为window的onload事件注册处理函数,表示页面加载完毕后触发执行
//标签加载完成,并且标签指定的资源也要加载完成,才能注册事件
onload = function () {
};
//表示加载完成后执行此代码,(dom就绪)只要标签加载完成后 即可注册(效率比较高)
$(document).ready(function () {
});
//简写如下
$(function () {
$('#btnShow').click(function () {
alert(123);
});
});
</script>
</head>
<body>
<input type="button" id="btnShow" name="name" value="" />
</body>
</html> 5、示例
点谁谁哭
点击按钮,设置div中的内容text(),html()
点击按钮,让所有的p中都显示“我们都是P”
例子1:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
//表示加载就绪,是ready的简写
$(function () {
//获取所有按钮,得到jquery对象,为对象注册点击事件
//隐式迭代:自动将数组当的每个元素都执行一遍操作
//当前:会将数组中的每个input进行click绑定
$('input').click(function () {
//将当前点击的按钮的文本变成呜呜
//this表示触发当前事件的dom对象
this.value = '呜呜';
});
});
</script>
</head>
<body>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
<input type="button" value="哈哈"/>
</body>
</html>
例子2:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function() {
$('#btnShow').click(function () {
//对于标签对,使用text()、html()进行设置或获取
$('#txt1').text('这是个div');
});
});
</script>
</head>
<body>
<input type="button" id="btnShow" value="显示" />
<div id="txt1"></div>
</body>
</html> DOM对象与JQ对象的转换
为什么要转换呢?
为了使用jq中的方法,需要将dom对象转换成jq对象
jq并没有完成所有操作的封装,需要将jq对象转换成dom对象,再调用dom方法
dom->jq:$(dom对象名称)
jq->dom:jq对象.get(index)或jq对象[index]
对于dom对象,有属性、事件成员
对于jq对象,只有方法成员
例子3:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//将jquery对象转换成dom对象:通过[下标]的形式返回dom对象
//通过jquery的选择器得到的数组,才是jquery对象,才可以调用jquery的成员
//将dom对象转换成jquery对象:$(dom对象)
$('#btnShow').click(function() {
$('p').text('都是P');//隐式迭代
$(this).val('abc'); var temp = [1, 2, 3];
});
});
</script>
</head>
<body>
<input type="button" id="btnShow" value="都是P"/>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
<p>p5</p>
</body>
</html> 6、合成事件处理程序
hover(fn1,fn2):fn1表示mouseover的处理函数,fn2表示mouseout的处理函数
toggle(fn1,fn2...fnN):当元素被click后,轮流执行fn1、fn2、fnN方法
one(type,fn):表示注册的事件只响应一次,然后失效,type表示事件类型
例子:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//合成指向、移开事件
//$('#btnShow').hover(function() {//指向
// this.style.color = 'red';
//}, function() {//移开
// this.style.color = 'black';
//}); //合成点击事件,指定在n个函数间切换,点击次数为m
//$('#btnShow').toggle(function() {//第m%n==1次点击时执行此函数
// alert(1);
//}, function() {//第m%n==2次点击执行此函数
// alert(2);
//}, function() {//第m%n==0次点击执行此函数
// alert(3);
//}); //合成事件:只将绑定的事件执行一次
//$('#btnShow').one('click', function() {
// alert(1);
//});
});
</script>
</head>
<body>
<input type="button" id="btnShow" value="显示"/>
</body>
</html> 7、调用JS成员
直接使用,不需要任何转换,因为jq就是js
如:array是js对象,不需要进行jq转换
如:方法parseInt()是js中的方法,在jq编码时可以直接使用
例子:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//找到按钮,并绑定点击事件
$('#btnShow').click(function() {
//找到文本框并获取值
var num = parseInt($('#txtNum').val());//直接调用js的成员进行操作
num++;
//将值显示到文本框
$('#txtNum').val(num);//传递参数时,表示将值赋给value
});
});
</script>
</head>
<body>
<input type="text" id="txtNum"/><input type="button" id="btnShow" value="显示"/>
</body>
</html>
示例:加法计算器
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//为按钮绑定点击事件
$('#btnAdd').click(function () {
//获取文本框中的值,并转换成整数
var num1 = parseInt($('#txtNum1').val());
var num2 = parseInt($('#txtNum2').val());
//运算
var result = num1 + num2;
//显示
$('#txtResult').val(result);
});
});
</script>
</head>
<body>
<input type="text" id="txtNum1"/>+
<input type="text" id="txtNum2"/>
<input type="button" id="btnAdd" value="="/>
<input type="text" id="txtResult"/>
</body>
</html> 8、文档处理
创建元素:$('标签字符串')
添加元素:
append(),appendTo():追加子元素
prepend(),prependTo():前加子元素
after(),insertAfter():后加兄弟元素
before(),insertBefore():前加兄弟元素
动态删除元素
empty():清空子元素
remove(selector):删除当前元素,无参表示删除全部,有参表示删除符合条件的元素
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('#btnAppend').click(function () {
//动态创建Jquery对象
var hello= $('<b>Hello World</b>');
//追加:在子元素中,显示结果: 你好!!!Hello World,在div文本之后追加
$('#divContainer').append(hello);
//追加:在子元素中,显示结果: Hello World 你好!!!,在div文本之前追加
$('#divContainer').prepend('preappend');
//追加:在元素中,显示结果: 你好!!!Hello World,在div文本之后追加
$('#divContainer').insertAfter('insertAfter');
//追加:在同级元素中,显示结果: Hello World 你好!!!,在div文本之前追加
$('#divContainer').insertBefore('insertBefore');
});
$('#btnAppendTo').click(function () {
//追加到:
$('<b>Hello World</b>').appendTo('#divContainer');
$('<b>Hello World</b>').prependTo('#divContainer');
});
$('#btnEmpty').click(function () {
//清空元素
$('#divContainer').empty();
});
$('#btnRemove').click(function () {
//移除元素
$('#divContainer').remove($('b'));
});
});
</script>
</head>
<body>
<input type="button" id="btnAppend" value="Append" />
<input type="button" id="btnAppendTo" value="AppendTo" />
<input type="button" id="btnEmpty" value="Empty" />
<input type="button" name="name" id="btnRemove" value="remove" />
<div id="divContainer">你好!!!</div> </body>
</html> 9、省市联动
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
//定义省市数据,键值对集合
var datas = {
"北京": ["朝阳", "海淀", "昌平", "丰台"],
"山东": ["青岛", "济南", "烟台"],
"山西": ["大同", "太原", "运城", "长治"],
"河南": ["洛阳", "开封", "郑州", "驻马店"],
"河北": ["石家庄", "张家口", "保定"]
};
$(function () {
//创建省的select
var select = $('<select id="selectProvince"></select>');
//为省的select绑定change事件
select.change(function () {
var citys = datas[$(this).val()];
//删除市的原有option
$('#selectCity').empty();
//添加option
$.each(citys, function (index,item) {
$('<option>' + item + '</option>').appendTo(selectCity);
});
});
select.appendTo('body');
//遍历集合
$.each(datas, function (key, value) {
//根据数据创建option并追加到select上
$('<option value="' + key + '">' + key + '</option>').appendTo(select);
});
//创建市的select
var selectCity = $('<select id="selectCity"></select>').appendTo('body');
//获取选中的省信息
var pro = $('#selectProvince').val();
//将省名称作为建到集合中获取值
var citys = datas[pro];
//遍历市的数组
$.each(citys, function (index, item) {
$('<option>' + item + '</option>').appendTo(selectCity);
});
});
</script>
</head>
<body> </body>
</html> 10、层级选择器
符号一:空格,表示取子元素,无论是几层的子元素,都会被选择到
符号二:大于号>,表示直接子元素,不包含后代子元素
符号三:加号+,表示之后紧临的一个同级元素
符号三:波浪号~,表示之后的所有同级元素 next(),表示下一个同级节点
prev(),表示上一个同级节点
nextAll(),表示之后所有同级节点
prevAll(),表示之前所有同级节点
siblings(),表示所有同级节点
parent(),表示父级节点
children(),表示子级节点
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//空格表示查找所有子级
$('#d1 div');
//大于号 表示查找直接子级,不包含后代
$('#d1>div');
//加号+表示 找到后面紧邻同级的div,若是没有则返回空数组
$('#d1+div');
//波浪号 表示之后的所有同级元素
$('#d1~div');
});
</script>
</head>
<body>
<div id="d1">
<div id="d11"></div>
<div id="d12">
<div id="d121"></div>
<div id="d122"></div>
</div>
<div id="d13"></div>
</div>
<div id="d2"></div>
<div id="d3">
<div id="d31">
<div id="d311"></div>
<div id="d312"></div>
<div id="d313"></div>
</div>
</div>
</body>
</html> 11、操作样式与类
样式操作:css(),按照键值对的格式对样式进行设置
如果只设置一个样式,则可直接赋值,如:css('color','red');
如果设置多个样式,则使用css({键1:值1,键2:值2})的格式
操作后生成的代码,都是对标签的style属性进行设置
类操作:addClass,hasClass,removeClass,toggleClass
也可以使用属性方法进行操作:attr('class','className');
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
//设置样式
$('#btnShow').css('color', 'grren');
$('#btnShow').css('background-color', 'red');
//设置多个样式
$('#btnShow').css({
'color': 'white',
'background-color': 'blue',
'font-size':'25px'
});
});
</script>
</head>
<body>
<input type="button" id="btnShow" name="name" value="显示" />
</body>
</html> 12、事例实现
示例1:开关灯
按钮点一下背景变白
再点一下背景变黑
如此往复
例子1:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('#btnLight').click(function () {
if (this.value == '关灯') {
$('body').css('background-color', 'black');
$(this).val('开灯');
} else {
$('body').css('background-color', 'white');
$(this).val('关灯');
} });
});
</script>
</head>
<body>
<input type="button" id="btnLight" name="name" value="关灯" />
</body>
</html>
示例2:点击按钮后,让页面中所有p的文字都变成黄色,文字都显示为‘都是P’(体会:链式编程)
例子2:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('#btnChange').click(function () {
//链式编程:只查找一次,支持逐个使用方法
$('p').text('都是P').css('color','yellow');
});
});
</script>
</head>
<body>
<input type="button" id="btnChange" name="name" value="都是P" />
<p>P1</p>
<p>P2</p>
<p>P3</p>
<p>P4</p>
<p>P5</p>
<p>P6</p>
</body>
</html>
示例3:ul中li的练习
鼠标指向li时文本变为红色,提示手图标
鼠标移开li时文本变为黑色
点击li时移到另外一个ul中
例子3:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('li').hover(function () {//指向
$(this).css({
'color': 'red',
'cursor': 'pointer'//变成小手
})
}, function () {//移开
$(this).css('color', 'black');
}).click(function () {//链式编程,编写点击事件
$(this).appendTo('#ul2');
});
}); </script>
</head>
<body>
<ul id="ul1">
<li>北京</li>
<li>上海</li>
<li>广州</li>
</ul>
<ul id="ul2"></ul>
</body>
</html> 13、过滤选择器
用于对选择结果执行进一步过滤
:first 第一个、:last 最后一个 、:eq() 搜索第几个、:gt() 大于、:lt() 小于、:not(选择器)、:even偶数、:odd奇数
说明1:索引下标从0开始
说明2:以下标判断奇偶,下标从0开始
标题的快速获取
普通方法:$('h1,h2,h3...h6')
快捷方法:$(':header')
例子:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('div:first');
});
</script>
</head>
<body>
<div id="d1">
<div id="d11"></div>
<div id="d12">
<div id="d121"></div>
<div id="d122"></div>
</div>
<div id="d13"></div>
</div>
<div id="d2"></div>
<div id="d3">
<div id="d31">
<div id="d311"></div>
<div id="d312"></div>
<div id="d313"></div>
</div>
</div>
</body>
</html> 14、
根据数据生成表格(数据见备注)
使表格中奇偶行显示不同背景色
当鼠标指向行时高亮显示
当鼠标离开时离开行时恢复到原来颜色
设置列表中前三名粗体显示
例子1:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
var list = [
{ id: '1', country: '中国', capital: '北京' },
{ id: '2', country: '美国', capital: '华盛顿' },
{ id: '3', country: '日本', capital: '东京' },
{ id: '4', country: '韩国', capital: '首尔' }
]; $(function () {
//遍历集合,创建tr跟td
$.each(list, function (index, item) {
$(' <tr><td>' + item.id + '</td><td>' + item.country + '</td><td>' + item.capital + '</td></tr>').appendTo('#list');
});
//为奇偶行指定不同背景颜色
$('#list tr:even').css('background-color', 'red');
$('#list tr:odd').css('background-color', 'green');
$('#list tr').hover(function () {//移上
bgcolor = $(this).css('background-color');
$(this).css('background-color','blue')
}, function () {//移开
$(this).css('background-color', bgcolor)
});
});
</script>
</head>
<body>
<table border="1" >
<thead>
<th width="100"> 编号</th>
<th width="100"> 国家</th>
<th width="100"> 首都</th>
</thead>
<tbody id="list"> </tbody>
</table>
</body>
</html> 15、
设置ul中的li效果
移上时显示为红色背景
此节点之前的节点显示为黄色背景
此节点之后的节点显示为蓝色背景
移开时全都显示白色背景
提示:方法end() 恢复到最近的"破坏性"操作之前
例子2:
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="scripts/jquery-1.7.1.min.js"></script>
<script>
$(function () {
$('li').hover(function () {//移上
$(this).css('background-color', 'red')
.prevAll()//这方法找到当前节点的所有节点,破坏了之前的链
.css('background-color', 'yellow')
.end()//恢复最近一次链的破坏
.nextAll().css('background-color','blue');
}, function () {//移开
$(this).css('background-color', 'white').siblings().css('background-color', 'white');
});
});
</script>
</head>
<body>
<ul id="ul1">
<li>北京</li>
<li>上海</li>
<li>广州</li>
</ul>
<ul id="ul2"></ul>
</body>
</html>