jQuery 是对 JavaScript 的封装,它是免费、开源的 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程。
jQuery 的引入
在 html 文件 中加入引用,需要下载,也可以在线引用。
<script src="js/jquery-1.12.4.min.js"></script>
jQuery 的入口函数 (页面加载完成获取标签元素,比 window.onload 快,onload 还需要等标签获取完数据才执行)
// 简化写法
$(function(){
...
});
jQuery 选择器的种类
- 标签选择器
- 类选择器
- id选择器
- 层级选择器
- 属性选择器
示例代码:
$('#myId') //选择id为myId的标签
$('.myClass') // 选择class为myClass的标签
$('li') //选择所有的li标签
$('#ul1 li span') //选择id为ul1标签下的所有li标签下的span标签
$('input[name=first]') // 选择name属性等于first的input标签
可以使用 length 属性来判断标签是否选择成功, 如果 length 大于 0 表示选择成功,否则选择失败。
$(function(){
result = $("div").length;
alert(result);
});
选择集的过滤
has 方法 和 eq 方法
<script>
$(function(){
// has 方法的使用,选择必须有 id 属性为 mytext 的 div 标签。
var $div = $("div").has("#mytext");
// 设置样式
$div.css({"background":"red"});
// eq 方法的使用,选择 index 为 1 的 div 标签。
var $div = $("div").eq(1);
// 设置样式
$div.css({"background":"yellow"});
});
</script>
<div>
这是第一个div
</div>
<div>
这是第二个div
</div>
选择集转移操作
元素的各种操作,都要先选定需要的目标标签,所以选择集需要掌握。
- $(’#box’).prev(); 表示选择 id 是 box 元素的上一个的同级元素
- $(’#box’).prevAll(); 表示选择 id 是 box 元素的上面所有的同级元素
- $(’#box’).next(); 表示选择 id 是 box 元素的下一个的同级元素
- $(’#box’).nextAll(); 表示选择 id 是 box 元素的下面所有的同级元素
- $(’#box’).parent(); 表示选择 id 是 box 元素的父元素
- $(’#box’).children(); 表示选择 id 是 box 元素的所有子元素
- $(’#box’).siblings(); 表示选择 id 是 box 元素的其它同级元素
- $(’#box’).find(’.myClass’); 表示选择 id 是 box 元素的class等于 myClass 的元素
<script>
$(function(){
var $div = $('#div01');
// 设置样式
$div.prev().css({'color':'red'});
$div.prevAll().css({'text-indent':50});
$div.next().css({'color':'blue'});
$div.nextAll().css({'text-indent':80});
$div.siblings().css({'text-decoration':'underline'})
$div.parent().css({'background':'gray'});
$div.children().css({'color':'red'});
$div.find('.sp02').css({'font-size':30});
});
</script>
<div>
<h2>这是第一个h2标签</h2>
<p>这是第一个段落</p>
<div id="div01">这是一个<span>div</span><span class="sp02">第二个span</span></div>
<h2>这是第二个h2标签</h2>
<p>这是第二个段落</p>
</div>
获取和设置元素内容
html 方法
<script>
$(function(){
var $div = $("#div1");
// 获取标签的html内容
var result = $div.html();
alert(result);
// 设置标签的html内容,之前的内容会清除
$div.html("<span style='color:red'>你好</span>");
// 追加html内容
$div.append("<span style='color:red'>你好</span>");
});
</script>
<div id="div1">
<p>hello</p>
</div>
prop 方法的使用
<style>
.a01{
color:red;
}
</style>
<script>
$(function(){
var $a = $("#link01");
var $input = $('#input01')
// 获取元素属性
var sId = $a.prop("id");
alert(sId);
// 设置元素属性
$a.prop({"href":"http://www.baidu.com","title":'这是去到百度的链接',"class":"a01"});
// 获取value属性
// var sValue = $input.prop("value");
// alert(sValue);
// 获取value属性使用val()方法的简写方式
var sValue = $input.val();
alert(sValue);
// 设置value值
$input.val("222222");
})
</script>
<a id="link01">这是一个链接</a>
<input type="text" id="input01" value="111111">
jQuery 的常用事件
<script>
$(function(){
var $li = $('.list li');
var $button = $('#button1')
var $text = $("#text1");
var $div = $("#div1")
// 鼠标点击
$li.click(function(){
// this指的是当前发生事件的对象,但是它是一个原生js对象
// this.style.background = 'red';
// $(this) 指的是当前发生事件的jquery对象
$(this).css({'background':'gold'});
// 获取jquery对象的索引值,通过index() 方法
alert($(this).index());
});
// 一般和按钮配合使用
$button.click(function(){
alert($text.val());
});
// 获取焦点
$text.focus(function(){
$(this).css({'background':'red'});
});
// 失去焦点
$text.blur(function(){
$(this).css({'background':'white'});
});
// 鼠标进入
$div.mouseover(function(){
$(this).css({'background':'gold'});
});
// 鼠标离开
$div.mouseout(function() {
$(this).css({'background':'white'});
});
});
</script>
<div id="div1">
<ul class="list">
<li>列表文字</li>
<li>列表文字</li>
<li>列表文字</li>
</ul>
<input type="text" id="text1">
<input type="button" id="button1" value="点击">
</div>
事件代理
事件代理就是利用事件冒泡的原理(事件冒泡就是同名事件会向它的父级一级一级传递),把同名事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
$(function(){
$list = $('#list');
// 父元素ul 来代理 子元素li的点击事件
$list.delegate('li', 'click', function() {
// $(this)表示当前点击的子元素对象
$(this).css({background:'red'});
});
})
<ul id="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
delegate方法参数说明:
delegate(childSelector, event, function)
childSelector: 子元素的选择器
event: 同名事件名称,比如: ‘click’
function: 当事件触发执行的函数
JavaScript 对象
JavaScript 中的所有事物都是对象。
创建 JavaScript 对象
- 通过顶级Object类型来实例化一个对象
- 通过对象字面量创建一个对象
Object类创建对象的示例代码:
<script>
var person = new Object();
// 添加属性:
person.name = 'tom';
person.age = '25';
// 添加方法:
person.sayName = function(){
alert(this.name);
}
// 调用属性和方法:
alert(person.age);
person.sayName();
</script>
对象字面量创建对象的示例代码:
<script>
var person2 = {
name:'Rose',
age: 18,
sayName:function(){
alert('My name is' + this.name);
}
}
// 调用属性和方法:
alert(person2.age);
person2.sayName();
</script>
json 的介绍
JavaScript Object Notation : javascript对象表示法
类似于 javascript 对象的字符串,它同时是一种数据格式。
json的格式
对象格式的json数据:(只能用 双引号 )
{
"name":"tom",
"age":18
}
数组格式的json数据
["tom",18,"programmer"]
实际使用的 json 格式会比较复杂
{
"name":"jack",
"age":29,
"hobby":["reading","travel","photography"]
"school":{
"name":"Merrimack College",
"location":"North Andover, MA"
}
}
json数据转换成JavaScript对象
var sJson = '{"name":"tom","age":18}';
var oPerson = JSON.parse(sJson);
// 操作属性
alert(oPerson.name);
alert(oPerson.age);
ajax 写法示例
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function(){
// 发送ajax请求,给div绑定后台提供的数据
// $.get("http://127.0.0.1:8000/data.json", {"request": 2}, function(data){
// alert(data);
// // 成功时回调的函数, 此时data就是后台给提供的数据
// $("div").html(data.username + data.passwd);
// }).error(function(){
// // 失败时回调的函数
// alert("请求异常");
// });
// 请求的后台数据和网页在同一个服务器主机上面,可以省略ip地址和端口号
// $.get("data.json", {"request": 2}, function(data){
// alert(data);
// // 成功时回调的函数, 此时data就是后台给提供的数据
// $("div").html(data.username + data.passwd);
// }).error(function(){
// // 失败时回调的函数
// alert("请求异常");
// });
// 发送post方式的ajax请求
$.post("data.json", {"request": 2}, function(data){
alert(data);
// 成功时回调的函数, 此时data就是后台给提供的数据
$("div").html(data.username + data.passwd);
}, "json").error(function(){
// 失败时回调的函数
alert("请求异常");
});
})
</script>
<div>
静态数据
</div>