刚开始是做java web 开发的,一直主攻后端,所以前端能力有所欠缺。虽然jquery也一直在用,但是真的很不系统,每次遇到稍微有点生僻的就要查资料。首先要说明的一点是我的学习网络资源http://www.w3school.com.cn/jquery/index.asp 版权归w3school所有。这次狠下心把jquery花几天时间重新梳理一遍,要说明的是默认读者是有html基础的,下面直接从代码开始我们的jquery之旅
<html>
<head>
<!-引入jquery资源->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>点击我,我会消失哦</p>
</body>
</html>
很简单的实现了一个功能,点击<p>元素内容,会隐藏<p>元素的内容。在<head>中引入jquery.js文件。平时我会这么写,加载Microsoft CDN (谷歌也有,但是谷歌在国内很蛋疼),也就是微软提供的jquery 网络资源
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"
这样做的好处是,用户很可能已经加载过微软jquery,那么当下次访问的时候会直接从缓存中加载,这样会加快访问的速度。
一. 四种获取元素的方式
- ${#test} 表示 id 为 test 的元素;
- ${.test} 表示 class test 的元素;
- ${this} 表示当前元素;
- ${p} 表示所有的<p>元素
需要说明的是this的用法,代码说明
<html>
<head>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script type="text/javascript">
<!-下面一行表示在文档完全加载完之后再运行js代码->
$(document).ready(function(){
<!-第一处->
$("button").click(function(){
<!-第二处->
$(this).hide();
});
});
</script>
</head>
<body>
<button type="button">Click me</button>
</body>
</html>
代码表示所有的button标签在点击后隐藏自己。
二. jQuery选择器
前面一节讲了四种获取获取HTML元素的方法,大家也许发现了,只是通过一种方式满足不了我们的日常使用,如果我想获取的id为test的<p>元素呢?jQuery可以这样获取:${p#test} 选取所有id="test"的<p>元素。
1. jQuery元素选择器
jQuery 使用 CSS 选择器来选取 HTML 元素。
$("p") 选取 <p> 元素。
$("p.intro") 选取所有 class="intro" 的 <p> 元素。
$("p#demo") 选取所有 id="demo" 的 <p> 元素。
2. jQuery属性选择器
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
3. jQuery CSS选择器
jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。比如下面表示把所有p元素的背景颜色变为红色;
$("p").css("background-color","red");
* jQuery是为处理 HTML 事件而特别设计的,下面是一些事件
Event 函数 | 绑定函数至 |
---|---|
$(document).ready(function) | 将函数绑定到文档的就绪事件(当文档完成加载时) |
$(selector).click(function) | 触发或将函数绑定到被选元素的点击事件 |
$(selector).dblclick(function) | 触发或将函数绑定到被选元素的双击事件 |
$(selector).focus(function) | 触发或将函数绑定到被选元素的获得焦点事件 |
$(selector).mouseover(function) | 触发或将函数绑定到被选元素的鼠标悬停事件 |
三. 隐藏、显示、切换,滑动,淡入淡出,以及动画
1. 隐藏与显示
还记得前面学过的hide()函数吗?下面是功能更加强大的,具有动画效果的hide()和show()函数
$(selector).hide(speed,callback); //speed表示动画的速度,取值有"fast","slow"或者具体的毫秒数,
$(selector).show(speed,callback); //callback表示动画执行完毕之后回调的函数名
$(selector).toggle(speed,callback);//表示hide与show之间的切换
下面代码表示点击隐藏按钮后,首先隐藏P标签的内容,然后执行show()函数,即弹出一个对话框。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
<!-在缓慢的隐藏p元素之后执行show函数->
$("p").hide(2000,show);
});
});
<!-弹出一个窗口->
function show(){alert("隐藏了")}
</script>
</head>
<body>
<button type="button">隐藏</button>
<p>这是一个段落。</p>
<p>这是另一个段落。</p>
</body>
</html>
2. 淡入淡出
$(selector).fadeIn(speed,callback); //淡入
$(selector).fadeOut(speed,callback); //淡出
$(selector).fadeToggle(speed,callback); //淡入与淡出之间切换
$(selector).fadeTo(speed,opacity,callback);// opacity 是0到1之间的一个数值,表示不透明度
3. 滑动
$(selector).slideDown(speed,callback); //向下滑动
$(selector).slideUp(speed,callback); //向上滑动
$(selector).slideToggle(speed,callback); //向上与向下切换
4. 动画
动画用animate()来表示
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
var div=$("div");
div.animate({left:'100px'},"slow");
div.animate({fontSize:'3em'},2000);
});
});
</script>
</head>
<body>
<button>开始动画</button>
<div style="background:#98bf21;height:100px;width:200px;position:absolute;">HELLO</div>
</body>
</html>
上面代码实现的是:点击“开始动画”按钮,彩色快开始向右移动,完毕后div里面的HELLO字体开始变大。
有时候我们在上面这些动作进行的时候需要停止动作,可以对进行动作的元素执行函数stop();比如上面的
动画,我们可以用$("div").stop();来停止动画。
易错实例:我们在某个动画执行完后想继续执行下面的行为;比如hide()之后弹出alert();直接看代码
<html>
<head>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
<!-写法1->
$("p").hide(1000);
alert("先执行弹出窗,再完全隐藏掉p元素");
});
<!-写法2->
$("p").hide(1000,function(){
alert("P元素完全隐藏后再执行弹出窗"););
});
});
</script>
</head>
<body>
<button type="button">Hide</button>
<p>This is a paragraph with little content.</p>
</body>
</html>
很明显写法2才是正确的选择。写法1是不能实现我们的需求的;因为JS执行是逐一执行的,隐藏执行接下来立马执行alert(),但是此时hide()函数还没有执行完,所以会产生这种错误。
5. jQuery chaining(动画链)
有时候需要对某个组件执行一系列的动画或动作,那么就需要jQuery chaining 了,如下所示
$("#p").css("color","red").slideUp(2000).slideDown(2000);
//先改变颜色为红色,然后上滑接着下滑
三. jQuery HTML
jQuery 中非常重要的部分,就是操作 DOM(Document Object Model(文档对象模型)) 的能力。jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。下面列出常用的
1. HTML获取和设置
- text() - 设置或返回所选元素的文本内容
- html() - 设置或返回所选元素的内容(包括 HTML 标记)
- val() - 设置或返回表单字段的值
- attr() - 设置或返回属性的值
下面的实例是给上面的方法增加了回调函数。
例:<p>元素的内容后面添加内容
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$("p").text(function(i,oldText){
return "Old text: " + oldText + " New text: 这是新的!";
});
});
});
</script>
</head>
<body>
<p>这是旧的</p>
<button id="btn1">显示旧/新文本</button>
</body>
</html>
2. HTML的添加
append() - 在被选元素的结尾插入内容
prepend() - 在被选元素的开头插入内容
after() - 在被选元素之后插入内容
before() - 在被选元素之前插入内容
*需要注意的是前两个是对元素内部的内容添加,而后两个是对选中元素之外插入内容。
3. HTML的删除
remove() - 删除被选元素(及其子元素)
empty() - 从被选元素中删除子元素
4. 获取并设置CSS类
有时候需要动态的设置样式,jQuery可以很方便的实现这个步骤;jQuery 拥有若干进行 CSS 操作的方 法。我们将学习下面这些:
addClass() - 向被选元素添加一个或多个类
removeClass() - 从被选元素删除一个或多个类
toggleClass() - 对被选元素进行添加/删除类的切换操作
css() - 设置或返回样式属性,如:$("p").css("background-color","yellow");
<!DOCTYPE html>
<html>
<head>
<style>
.important
{
font-weight:bold;
font-size:xx-large;
}
.blue
{
color:blue;
}
</style>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("h1,h2,p").toggleClass("blue");
});
});
</script>
<style type="text/css">
.blue
{
color:blue;
}
</style>
</head>
<body>
<h1>标题 1</h1>
<h2>标题 2</h2>
<p>这是一个段落。</p>
<p>这是另一个段落。</p>
<button>切换 CSS 类</button>
</body>
</html>
5. jQuery尺寸
width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。
height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。
innerWidth() 方法返回元素的宽度(包括内边距)。
innerHeight() 方法返回元素的高度(包括内边距)。
outerWidth() 方法返回元素的宽度(包括内边距和边框)。
outerHeight() 方法返回元素的高度(包括内边距和边框)。
outerWidth(true) 方法返回元素的宽度(包括内边距、边框和外边距)。
outerHeight(true) 方法返回元素的高度(包括内边距、边框和外边距)。
需要说明的是也可以试着元素的宽高 如:$("#div1").width(500).height(500);
四. jQuery遍历
这里的遍历表示获取本元素的父元素、同级元素和子元素。
1.向上遍历
parent() 方法返回被选元素的直接父元素。
parents()方法返回被选元素的所有父元素,直到根元素为止。
parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
2.向下遍历
children() 方法返回被选元素的所有直接子元素。
find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
3.同胞元素
- siblings() 返回所有的同胞元素
- next() 返回接下来的第一个同胞元素
- nextAll()返回接下来所有的同胞元素
- nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。
接下来三个与上面类似,只不过是向前查找
- prev()
- prevAll()
- prevUntil()
4.过滤遍历
三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素。其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。
5.jQuery Ajax
感觉这是jQuery最好的功能了,纯js的ajax编码真的是恶心出翔了。