开始学习jQuery
一 jQuery是什么?
1、 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。
2、jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!
3、它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器
(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
4、jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现
动画效果,并且方便地为网站提供AJAX交互。非常好用
<5>jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件
可供选择。
通俗讲,就是封装了JavaScript,使写JavaScript代码更加简洁,高效,解决了兼容问题。变成了非常好用的调用接口。但是使用之前一定要先加载jQuery的模块代码!
二 什么是jQuery对象?
jQuery 对象就是通过jQuery包装DOM对象后产生的对象。jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuery 里的方法: $(“#test”).html();而且约定俗成的,在其前面加上$符号
var $variable = jQuery 对象 //这个是jQuery的对象声明
var variable = DOM 对象 //这个是DOM对象的声明
三 寻找元素(选择器和筛选器)
1、选择器,就是寻找某个元素
1.1 基本选择器:跟CSS样式差不多很好学,注意加上双引号
$("*") : 就是选择到所有的元素呗,一般是全体元素设置公共属性设置
$("#id") : 根据id找到某一标签,id是唯一的,所以找到的也是唯一的
$(".class") : 根据class属性找到相应的标签
$(".class,p,div") : 多内容查找,是或的关系
1.2 层级选择器:层层选择的意思,这层选择还要下一层选择,跟北影的复试差不多
$(".outer div") .outer的子孙后代中的div
$(".outer>div") .outer子代的儿子代的div
$(".outer+div") .outer紧随的兄弟div(后面一个)
$(".outer~div") .outer后面的所有的div兄弟
1.3 属性选择器 :根据某些属性找到某些标签
$(
'[id="div1"]'
) :id不建议这么写
$(
'[zhiwei="qunzhu"]'
) :一般都是自定义的属性才会这么查找
$("#updatemagic option[value='"+ list[4] +"']") 当属性的值有变量时,需要用到字符串标签
1.4表单选择器:
$(":input") | 所有 <input> 元素 | |
:text | $(":text") | 所有 type="text" 的 <input> 元素 |
:password | $(":password") | 所有 type="password" 的 <input> 元素 |
:radio | $(":radio") | 所有 type="radio" 的 <input> 元素 |
:checkbox | $(":checkbox") | 所有 type="checkbox" 的 <input> 元素 |
:submit | $(":submit") | 所有 type="submit" 的 <input> 元素 |
:reset | $(":reset") | 所有 type="reset" 的 <input> 元素 |
:button | $(":button") | 所有 type="button" 的 <input> 元素 |
:image | $(":image") | 所有 type="image" 的 <input> 元素 |
:file | $(":file") | 所有 type="file" 的 <input> 元素 |
2、筛选器,就是找到之后再做筛选
2.1 过滤筛选器
$(
"li"
).eq(2) : 找到一堆li,然后取第三个,因为是从0开始的
$(
"li"
).first() : 找到一堆li,然后取第一个,也就是.eq(0)
$(
"li"
).last() : 找到一堆li,然后取最后一个
$(
"ul li"
).hasclass(
"test"
) 找到一堆li,然后看谁的class里面有test
2.2 查找筛选器
$("div").children(".test") : 找到所有儿子代中class带有test的
$("div").find(".test") : 找到所有子孙中class带test的
$(".test").next() 紧随的兄弟(后面一个)
$(".test").nextAll() 紧跟的所有兄弟们(后面的所有)
$(".test").nextUntil() 紧跟的兄弟直到。。。 $("div").prev() : 前面的。。。
$("div").prevAll() :前面的
$("div").prevUntil() :前。。。 $(".test").parent() :.test的父对象
$(".test").parents() :.test的父亲,爷爷。。。直到标签的尽头
$(".test").parentUntil() :.test的父亲,爷爷。。。直到某个条件
$("div").siblings() : div的兄弟姐妹们
四 操作元素(属性,css,文档处理)
4.1 属性操作
-------------------------属性----------
$("").attr();
$("").removeAttr();
$("").prop();
$("").removeProp();
//对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
//对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
//像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此
//需要使用prop方法去操作才能获得正确的结果。
--------------------------CSS类
$("").addClass(class|fn) :给class属性的加个值
$("").removeClass([class|fn]):删除class属性的某个值
--------------------------HTML代码/文本/值
$("").html([val|fn])
$("").text([val|fn])
$("").val([val|fn|arr])
---------------------------
$("").css("color","red")
4.2 文档处理:增删改复制标签
/创建一个标签对象
$("<p>") //内部插入 $("").append(content|fn) ----->$("p").append("<b>Hello</b>");
$("").appendTo(content) ----->$("p").appendTo("div");
$("").prepend(content|fn) ----->$("p").prepend("<b>Hello</b>");
$("").prependTo(content) ----->$("p").prependTo("#foo"); //外部插入 $("").after(content|fn) ----->$("p").after("<b>Hello</b>");
$("").before(content|fn) ----->$("p").before("<b>Hello</b>");
$("").insertAfter(content) ----->$("p").insertAfter("#foo");
$("").insertBefore(content) ----->$("p").insertBefore("#foo"); //替换
$("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>"); //删除 $("").empty()
$("").remove([expr]) //复制 $("").clone([Even[,deepEven]]) 4.3 单独说说CSS样式操作
CSS
$("").css(name|pro|[,val|fn])
位置
$("").offset([coordinates])
$("").position()
$("").scrollTop([val])
$("").scrollLeft([val])
尺寸
$("").height([val|fn])
$("").width([val|fn])
$("").innerHeight()
$("").innerWidth()
$("").outerHeight([soptions])
$("").outerWidth([options])
五 事件
1、页面载入
$(document).ready(function(){}) -----------> $(function(){})
两个是等效的,后面的是缩写
2、事件处理
$("").on(eve,[selector],[data],fn) // 在选择元素上绑定一个或多个事件的事件处理函数。
好处在于.on方法为动态添加的元素也能绑上指定事件;新增加的标签也会有相应的方法哟、 其他常用的方法比如onMouseover,onClick....在jQuery之需要去掉on就可以很方便的使用了
3、一些动画效果:括号里面一般都是ms,表示完成需要多长时间
1、显示和隐藏
$("p").hide(1000); 隐藏
$("p").show(1000); 显示
$("p").toggle(1000); 点一下隐藏再点一下显示,切换的作用,相当于开关
2、滑动
$("#content").slideDown(1000);向下滑动
$("#content").slideUp(1000);向上滑动
$("#content").slideToggle(1000);滑动切换
3、淡入淡出
$("#id1").fadeIn(1000);
$("#id1").fadeToggle(1000);
$("#id1").fadeIn(1000);
$("#id1").fadeTo(1000,0.4);淡到指定的透明度 4、回调函数 函数完成后调用某个指定的函数
$("p").hide(1000,function(){
alert($(this).html())
})
七 扩展方法 (插件机制):也就是自定义jQuery方法
$.extend(object) //为JQuery 添加一个静态方法。
$.fn.extend(object) //为JQuery实例添加一个方法。
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
console.log($.min(3,4)); //-----------------------------------------------------------------------$.fn.extend({
"print":function(){
for (var i=0;i<this.length;i++){
console.log($(this)[i].innerHTML)
} }
}); 八 jQuery的实例应用 1、jQuery轮播图:请先找五张大小一致的图片命名为1.jpg .....
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
* {
margin: 0;
padding: 0;
} .outer {
width: 670px;
height: 360px;
margin: 100px auto;
position: relative;
overflow: hidden;
} ul, li {
list-style: none;
display: inline-block;
float: left;
} .btn {
/*position: relative;*/
height: 50px;
width: 39px; top: 150px;
cursor: pointer;
} .left-btn {
position: absolute;
background: url("left-arrow-small.png");
left: 0px; }
.right-btn{
position: absolute;
background: url("right-arrow-small.png");
right: 0px; }
.bottom{
position: absolute;
background-color: hsla(0,0%,100%,.3);
bottom: 20px;
left: 260px;
height: 20px;
width: 180px;
/*border: 1px solid red ;*/
border-radius: 12px;
line-height: 20px;
padding-top: 4px;
}
.bottom li{
display: inline-block;
margin-right: 12px;
margin-left: 12px;
margin-top: 3px;
width: 12px;
height: 12px;
border-radius: 100%;
background-color: white;
text-align: center;
}
.bottom ul li.current-point{
background-color: red;
}
.hide{
display: none;
} </style>
<script src="jquery-3.1.1.js"></script>
<script>
$(function () { })
</script>
<body>
<div class="outer">
<ul class="imgs">
<li class="img current"><a href=""><img src="1.jpg" alt="" ></a></li>
<li class="img"><a href="" ><img src="2.jpg" alt="" ></a></li>
<li class="img"><a href="" ><img src="3.jpg" alt=""></a></li>
<li class="img"><a href="" ><img src="4.jpg" alt=""></a></li>
<li class="img"><a href="" ><img src="5.jpg" alt=""></a></li>
</ul>
<div class="left-btn btn hide"></div>
<div class="right-btn btn hide"></div> <div class="bottom hide">
<ul>
<li class="bottom-slider current-point" id="0"></li>
<li class="bottom-slider" id="1"></li>
<li class="bottom-slider" id="2"></li>
<li class="bottom-slider" id="3"></li>
<li class="bottom-slider" id="4"></li>
</ul>
</div>
</div>
<script>
//定义计时器
var index = 0
var timer = setInterval(run,2000) function run() {
index++;
var $imgs = $(".outer ul.imgs li")
// console.log(index)
if (index >= $imgs.length) {
index=0;
} changeimg(index)
} //定义切换至第index张图片的函数
function changeimg(index) {
// console.log(index)
$(".outer ul li.current").fadeOut(500).removeClass("current")
$(".bottom ul li.current-point").removeClass("current-point")
$(".bottom ul li.bottom-slider").eq(index).addClass("current-point")
$(".outer ul.imgs li").eq(index).fadeIn(500).addClass("current") // console.log($(".outer ul.imgs li").eq(index))
} //当鼠标移至outer区域,停止轮播
$(".outer").mouseover(function () {
clearInterval(timer);
$(".left-btn,.right-btn,.bottom").removeClass("hide") }) //当鼠标移除outer区域,继续进行轮播
$(".outer").mouseout(function () {
timer = setInterval(run,2000)
$(".left-btn,.right-btn,.bottom").addClass("hide")
}) //当鼠标点击向左的箭头,向前切换
$(".left-btn").click(function () {
if (index == 0) {
index = $(".outer ul.imgs li").length-1
}else {
index--
} changeimg(index)
})
//当鼠标点击向右的箭头,向后切换
$(".right-btn").click(function () {
if (index == ($(".outer ul.imgs li").length-1)) {
index = 0
}else {
index++
} changeimg(index)
}) //bottom切换
var $num = $(".bottom ul li")
// console.log($num.length)
// for (var i=0;i< $num.length;i++){
// console.log($num[i])
// console.log($num[i].id)
$num.click(function () {
console.log(this.id)
changeimg(this.id)
}) // }
// for (var )
</script> </body>
</html>
jQuery轮播图
2、jQuery之面板拖动
鼠标位置:
pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化。可以理解为:相对#(0.0)坐标绝对定位
clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移动 而变化。可以理解为:相对可视化左上角坐标绝对定位
offsetX:IE特有,鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点,如果有boder,可能出现负值
layerX:FF特有,鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点
也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点
对象位置:
position()获取相对于它最近的具有相对位置(position:relative或position:absolute)的父级元素的距离,如果找不到这样的元素,则返回相对于浏览器的距离。
offset()始终返回相对于浏览器文档的距离,它会忽略外层元素
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class="model" style="border: 1px solid #ddd;width: 600px;position: absolute;">
<div class="title" style="background-color: black;height: 40px;color: white;">
标题
</div>
<div style="height: 300px;" class="content">
内容
</div>
</div>
<script type="text/javascript" src="jquery-3.1.1.js"></script>
<script>
$(function () {
//内容加载完自动执行下面代码
$(".title").mouseover(function () {
//移至标题区域鼠标变成move样式
$(this).css('cursor','move')
}).mousedown(function (e) {
//clientX和clientY都是鼠标的坐标
var mouse_origin_x = e.clientX;
var mouse_origin_y = e.clientY; //model对象在窗口的位置,用offset取元素的
var model_x = $(this).parent().offset().left;
var model_y = $(this).parent().offset().top;
// console.log($(this).parent())
// console.log(model_y)
// console.log(model_x) $(this).bind("mousemove",function (e) {
var mouse_dest_x = e.clientX;
var mouse_dest_y = e.clientY; var model_dest_x = model_x + mouse_dest_x-mouse_origin_x;
var model_dest_y = model_y + mouse_dest_y-mouse_origin_y;
$(this).parent().css("left",model_dest_x)
$(this).parent().css("top",model_dest_y) })
}).mouseup(function () {
$(this).unbind("mousemove")
}) })
</script>
</body>
</html>
3、jQuery的放大镜
请先找两张图片,一大一小
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
padding: 0;
margin: 0;
} .outer .small_box {
position: relative;
height: 400px;
width: 400px;
border: solid 2px red;
overflow: hidden;
} .outer .small_box .float {
height: 200px;
width: 200px;
background-color: darkgrey;
opacity: 0.5;
position: absolute; } .outer .big_box {
height: 400px;
width: 400px;
overflow: hidden;
position: absolute;
left: 410px;
top: 0px;
z-index: 1;
border: 2px solid rebeccapurple; } .outer .big_box img {
position: absolute;
z-index: 5;
} .hide {
display: none;
} </style>
</head>
<body>
<div class="outer">
<div class="small_box">
<div class="float hide"></div>
<img src="small.png" alt="">
</div>
<div class="big_box hide"><img src="big.jpg" alt=""></div>
</div> <script src="jquery-3.1.1.js"></script>
<script>
$(function () {
$(".small_box").mouseover(function () {
$(".float,.big_box").removeClass("hide"); });
$(".small_box").mouseout(function () {
$(".float").addClass("hide")
$(".big_box").addClass("hide")
});
$(".small_box").mousemove(function (e) { //找到一大堆的距离
var float_width = $(".float").width();
var float_height = $(".float").height();
// console.log(float_height,float_width)
var float_height_half = float_height / 2;
var float_width_half = float_width / 2;
var small_box_width = $(".small_box").width()
var small_box_height = $(".small_box").height() var float_position_x = (e.clientX - float_height_half) < 0 ? 0 : (e.clientX - float_height_half)
var float_position_y = (e.clientY - float_width_half) < 0 ? 0 : (e.clientY - float_width_half)
if (float_position_x > float_width ) {
float_position_x = float_width; }
if (float_position_y > float_height) {
float_position_y = float_height;
}
$(".float").css("left", float_position_x + "px")
$(".float").css("top", float_position_y + "px") var img_width = $(".big_box img").width();
var img_height = $(".big_box img").height();
var bigbox_width = $(".big_box").width()
var a = small_box_width-float_width;
var percentX = ($(".big_box img").width() -$(".big_box").width())/(small_box_width-float_width)
var percentY = ($(".big_box img").height() -$(".big_box").height())/(small_box_height-float_height) $(".big_box img").css("left", -percentX*float_position_x+"px")
$(".big_box img").css("top", -percentY*float_position_y+"px") })
}) </script>
</body>
</html>
jQuery的放大镜效果
参考:
http://www.cnblogs.com/jicheng/p/5945057.html
http://www.cnblogs.com/yuanchenqi/articles/6070667.html
开始学习jQuery的更多相关文章
- 从零开始学习jQuery (五) 事件与事件对象
本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...
- 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- 【菜鸟学习jquery源码】数据缓存与data()
前言 最近比较烦,深圳的工作还没着落,论文不想弄,烦.....今天看了下jquery的数据缓存的代码,参考着Aaron的源码分析,自己有点理解了,和大家分享下.以后也打算把自己的jquery的学习心得 ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- 从零开始学习jQuery (一) 入门篇
本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些 ...
- 学习jQuery的on事件
开发asp.net mvc程序,多少是离不开jQuery客户程序.今天Insus.NET学习jQuery的一个on事件驱动. 先在网页视图放一个图片铵钮,用户可以使用mouse对这图片时行over,o ...
- 学习Jquery
早就听说了Jquery的大名,一直没有细心的学习一下,通过阅读收集的一些资料,感觉Jquery真的很强大.决定开始自己的学习Jquery之旅.在这里不是为大家讲解Jquery(深知水平有限),只是将自 ...
- 学习jQuery之旅
早就听说了Jquery的大名,一直没有细心的学习一下,通过阅读收集的一些资料,感觉Jquery真的很强大.决定开始自己的学习Jquery之旅.在这里不是为大家讲解Jquery(深知水平有限),只是将自 ...
- 从零开始学习jQuery(转)
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
随机推荐
- Ghost:一款简约风格博客系统
前言 本文将介绍一种最快速的创建Ghost博客系统的方法,并实现绑定二级域名到该博客系统.本文以本博客的“微博客”为例. 一键创建Ghost博客系统 Kite 是 Ghost 博客托管商,网址为:ht ...
- 51nod-1179-最大的gcd(数学)
1179 最大的最大公约数 题目来源: SGU 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 给出N个正整数,找出N个数两两之间最大公约数的最大 ...
- SPOJ-394-ACODE - Alphacode / dp
ACODE - Alphacode #dynamic-programming Alice and Bob need to send secret messages to each other and ...
- mysql数据库基础知识和认识
mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -ppassworduse mysql;insert into user(h ...
- Spring入门6事务管理2 基于Annotation方式的声明式事务管理机制
Spring入门6事务管理2 基于Annotation方式的声明式事务管理机制 201311.27 代码下载 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 前言 ...
- 从userAgent判断浏览器是什么(chorme ie 火狐)浏览器类型检测、浏览器检测
一.正确的方法: 通过navigator对象的userAgent属性来判断, 主要是判断userAgent 的信息里是否含有以下字段信息: js代码(非完整版) /************ navig ...
- L153
警言是指传达一般真理或某种言论的短小句子.An aphorism is a short witty sentence which expresses a general truth or commen ...
- iOS 阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- Ubuntu下执行mysql的sql文件
Ubuntu下执行mysql的.sql文件 方法一: 1.执行此命令,会提示输入mysql的root账户的密码,验证成功后,会在dbname这个数据库中执行filename.sql这个脚本,其中f ...
- 概念:GNU构建系统和Autotool
经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉.事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件. ...