打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【Python之路】第十四篇
jquery简介

1.jquery是什么       ☛ 参考用法

  • jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。

  • jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。

  • 它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。

  • jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。

  • jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

  • jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

2.什么是jQuery对象?

  • jQuery 对象就是通过jQuery包装DOM对象后产生的对象。

  • jQuery 对象是 jQuery 独有的如果一个对象是 jQuery 对象那么它就可以使用 jQuery 里的方法: $(“#test”).html();

比如: 

$("#test").html()意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法 

这段代码等同于用DOM实现代码: document.getElementById(" test ").innerHTML; 

  虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错

约定:如果获取的是 jQuery 对象那么要在变量前面加上$. 

var $variable = jQuery对象 

var variable = DOM对象 

 

二   寻找元素(重要的选择器和筛选器) 

2.1选择器

2.1.1 基本选择器

1
2
3
4
5
$("*")
$("#id")  
$(".class"
$("element"
$(".class,p,div")       //每一个选择器匹配到的元素合并后一起返回。

2.1.2 层级选择器

1
2
3
4
$(".outer div")            //匹配所有的后代元素
$("parent > child")        //匹配所有的子元素
$("prev + next")           //匹配所有紧接在 prev 元素后的 next 元素
$("prev ~ siblings ")      //匹配 prev 元素之后的所有 siblings 元素(同级元素)

2.1.3 基本筛选器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$('li:first');    //获取第一个元素
$('li:last')      //最后一个元素
:not(selector)              //去除所有与给定选择器匹配的元素配的元素
$("input:not(:checked)")    //查找所有未选中的 input 元素
$("tr:even")     //索引为偶数的元素,从 0 开始
$("tr:odd")      //索引为奇数的元素,从 0 开始
$("tr:eq(1)")    //给定索引值的元素
$("tr:gt(0)")    //大于给定索引值的元素
$("tr:lt(2)")    //小于给定索引值的元素
$(":focus")      //当前获取焦点的元素
$(":animated")   //正在执行动画效果的元素

2.1.4 属性选择器

1
2
3
4
5
6
7
8
9
10
$("div[id]")
$('[id="div1"]')  
$("div[name!='new']")
$("div[name^='new']")
$("div[name&='new']")
$("div[name*='new']")
//复合:
$('["alex="sb"][id]')
$("div[id][name$='man']")

2.1.5 表单选择器

1
2
3
4
5
6
7
8
9
10
11
12
$(":input")      //匹配所有 input, textarea, select 和 button 元素
$(":text")       //所有的单行文本框
$(":password")   //所有密码框
$(":radio")      //所有单选按钮
$(":checkbox")   //所有复选框
$(":submit")     //所有提交按钮
$(":reset")      //所有重置按钮
$(":button")     //所有button按钮
$(":file")       //所有文件域
  
$("input:checked")    //所有选中的元素
$("select option:selected")    //select中所有选中的option元素

2.1.6 表单对象属性选择器

1
2
3
4
$(":enabled")        //匹配所有可用元素
$(":disabled")        //匹配所有不可用元素
$(":checked")        //匹配所有选中中元素
$(":selected")        //匹配所有选中的option元素

2.1.7 内容选择器

1
2
3
4
$(":contains(text)"//匹配包含给定文本的元素
$(":empty")           //匹配所有不包含子元素或者文本的空元素
$(":parent")          //匹配含有子元素或者文本的元素
$(":has(selector)")   //匹配含有选择器所匹配的元素的元素

2.1.8 可见性选择器  

1
2
$(":hidden")        //匹配所有不可见元素,或者type为hidden的元素
$(":visible")       //匹配所有的可见元素

2.2筛选器

2.2.1 过滤

1
2
3
4
5
$("p").eq(0)       //当前操作中第N个jQuery对象,类似索引
$('li').first()    //第一个元素
$('li').last()     //最后一个元素
$(this).hasClass("test")    //元素是否含有某个特定的类,返回布尔值
$('li').has('ul'//包含特定后代的元素

2.2.2 查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$("div").children()      //div中的每个子元素,第一层
$("div").find("span")    //div中的包含的所有span元素,子子孙孙
$("p").next()          //紧邻p元素后的一个同辈元素
$("p").nextAll()         //p元素之后所有的同辈元素
$("#test").nextUntil("#test2")    //id为"#test"元素之后到id为'#test2'之间所有的同辈元素,掐头去尾
$("p").prev()            //紧邻p元素前的一个同辈元素
$("p").prevAll()         //p元素之前所有的同辈元素
$("#test").prevUntil("#test2")    //id为"#test"元素之前到id为'#test2'之间所有的同辈元素,掐头去尾
$("p").parent()          //每个p元素的父元素
$("p").parents()         //每个p元素的所有祖先元素,body,html
$("#test").parentsUntil("#test2")    //id为"#test"元素到id为'#test2'之间所有的父级元素,掐头去尾
$("div").siblings()      //所有的同辈元素,不包括自己

实例 左侧菜单 

demo

实例 tab切换

demo
三   操作元素(属性 CSS 和 文档处理)  

3.1 属性操作

3.1.1 基本属性操作

1
2
3
4
5
6
7
8
$("div").attr("id");            //返回文档中所有div的id属性值
$("div").attr("id","4");            //设置所有div的id属性
$("div").attr({'alex':'sb'})        //设置多个属性,字典形式
$("div").removeAttr("name");       //将文档中图像的src属性删除
$("input[type='checkbox']").prop("checked", true);    //选中复选框
$("input[type='checkbox']").prop("checked", false);
$("img").removeProp("src");       //删除img的src属性

3.1.2 CSS类操作

1
2
3
$("p").addClass("selected");      //为p元素加上 'selected' 类
$("p").removeClass("selected");    //从p元素中删除 'selected' 类
$("p").toggleClass("selected");    //如果存在就删除,否则就添加

3.1.3 HTML代码/本文/值

1
2
3
4
5
6
$('p').html();               //返回p元素的html内容
$("p").html("Hello <b>nick</b>!");  //设置p元素的html内容
$('p').text();               //返回p元素的文本内容
$("p").text("nick");           //设置p元素的文本内容
$("input").val();             //获取文本框中的值
$("input").val("nick");          //设置文本框中的内容

实例 编辑框正反选

demo

实例 模态对话框

demo

3.2 CSS操作

3.2.1 样式

1
2
3
$("p").css("color");          //访问查看p元素的color属性
$("p").css("color","red");    //设置p元素的color属性为red
$("p").css({ "color": "red", "background": "yellow" });    //设置多个属性要用{}字典形式

3.2.2 位置

1
2
3
4
5
6
7
8
9
10
11
$('p').offset()     //元素在当前视口的相对偏移,Object {top: 122, left: 260}
$('p').offset().top
$('p').offset().left
$("p").position()   //元素相对父元素的偏移,对可见元素有效,Object {top: 117, left: 250}
$(window).scrollTop()       //获取滚轮滑的高度
$(window).scrollLeft()      //获取滚轮滑的宽度
$(window).scrollTop('100'//设置滚轮滑的高度为100
$(window).height()          //获取窗口的高度
$(document).height()        //获取文档的高度

3.2.3 尺寸

1
2
3
4
5
6
7
8
9
$("p").height();    //获取p元素的高度
$("p").width();     //获取p元素的宽度
$("p:first").innerHeight()    //获取第一个匹配元素内部区域高度(包括补白、不包括边框)
$("p:first").innerWidth()     //获取第一个匹配元素内部区域宽度(包括补白、不包括边框)
$("p:first").outerHeight()    //匹配元素外部高度(默认包括补白和边框)
$("p:first").outerWidth()     //匹配元素外部宽度(默认包括补白和边框)
$("p:first").outerHeight(true)    //为true时包括边距

实例 返回顶部

demo

缓慢返回顶部(带效果):

1
2
3
$('#backTop').bind('click',function(){
    $('html,body').animate( {scrollTop:0} );
});

注:html,body需一起使用。

实例 滚动菜单 

demo

3.3 文档处理

3.3.1 内部插入

1
2
3
4
$("p").append("<b>nick</b>");    //每个p元素内后面追加内容
$("p").appendTo("div");        //p元素追加到div内后
$("p").prepend("<b>Hello</b>");  //每个p元素内前面追加内容
$("p").prependTo("div");        //p元素追加到div内前

3.3.2 外部插入

1
2
3
4
$("p").after("<b>nick</b>");     //每个p元素同级之后插入内容
$("p").before("<b>nick</b>");    //在每个p元素同级之前插入内容
$("p").insertAfter("#test");     //所有p元素插入到id为test元素的后面
$("p").insertBefore("#test");    //所有p元素插入到id为test元素的前面

3.3.3 替换

1
2
$("p").replaceWith("<b>Paragraph. </b>");    //将所有匹配的元素替换成指定的HTML或DOM元素
$("<b>Paragraph. </b>").replaceAll("p");     //用匹配的元素替换掉所有 selector匹配到的元素

3.3.4 删除

1
2
3
$("p").empty();     //删除匹配的元素集合中所有的子节点,不包括本身
$("p").remove();    //删除所有匹配的元素,包括本身
$("p").detach();    //删除所有匹配的元素(和remove()不同的是:所有绑定的事件、附加的数据会保留下来)

3.3.5 复制

1
2
$("p").clone()      //克隆元素并选中克隆的副本
$("p").clone(true)   //布尔值指事件处理函数是否会被复制

实例 克隆方法的应用

demo
四   事件 

4.1 页面载入

  当页面载入成功后再运行的函数事件  使用后可以在开头位置写入jq代码

1
2
3
4
5
6
7
8
$(document).ready(function(){
  do something...
});
//简写
$(function($) {
  do something...
});

4.2 事件处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//bind 为每个匹配元素绑定事件处理函数,绑定多个用{}。     3.0+版本已弃用
$("p").bind("click", function(){
  alert( $(this).text() );
});
$(menuF).bind({
    "mouseover":function () {
     $(menuS).parent().removeClass("hide");
     },"mouseout":function () {
     $(menuS).parent().addClass("hide");
}
});        
$("p").click(function(){})  =  $("p").bind("click",function(){})    
$("p").one( "click", fun...)    //one 绑定一个一次性的事件处理函数
$("p").unbind( "click" )        //解绑一个事件

4.3 事件委派    3.0+版本已弃用

1
2
3
4
5
6
7
// 与bind 不同的是当事件发生时才去临时绑定。
$("p").delegate("click",function(){
  do something...
});
$("p").undelegate();       //p元素删除由 delegate() 方法添加的所有事件
$("p").undelegate("click")   //从p元素删除由 delegate() 方法添加的所有click事件

4.4 事件

$("p").click();      //单击事件$("p").dblclick();    //双击事件$("input[type=text]").focus()  //元素获得焦点时,触发 focus 事件$("input[type=text]").blur()   //元素失去焦点时,触发 blur事件$("button").mousedown()//当按下鼠标时触发事件$("button").mouseup()  //元素上放松鼠标按钮时触发事件$("p").mousemove()     //当鼠标指针在指定的元素中移动时触发事件$("p").mouseover()     //当鼠标指针位于元素上方时触发事件$("p").mouseout()     //当鼠标指针从元素上移开时触发事件$(window).keydown()    //当键盘或按钮被按下时触发事件$(window).keypress()   //当键盘或按钮被按下时触发事件,每输入一个字符都触发一次$("input").keyup()     //当按钮被松开时触发事件$(window).scroll()     //当用户滚动时触发事件$(window).resize()     //当调整浏览器窗口的大小时触发事件$("input[type='text']").change()    //当元素的值发生改变时触发事件$("input").select()    //当input 元素中的文本被选择时触发事件$("form").submit()     //当提交表单时触发事件$(window).unload()     //用户离开页面时

4.5 event object 对象

所有的事件函数都可以传入event参数方便处理事件

$("p").click(function(event){   alert(event.type); //"click"  }); (evnet object)属性方法:event.pageX   //事件发生时,鼠标距离网页左上角的水平距离event.pageY   //事件发生时,鼠标距离网页左上角的垂直距离event.type   //事件的类型event.which   //按下了哪一个键event.data   //在事件对象上绑定数据,然后传入事件处理函数event.target  //事件针对的网页元素event.preventDefault()  //阻止事件的默认行为(比如点击链接,会自动打开新页面)event.stopPropagation()  //停止事件向上层元素冒泡

实例 拖动面板

demo

解决: 拖动面板鼠标移动过快,移动断开问题

绑定在div上 鼠标移出div层 事件就消失了,绑定在 document 上也就是整个页面都有这个事件!

demo

event.clientX、event.clientY

鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性

event.pageX、event.pageY

类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了广泛支持。IE事件中没有这2个属性。

event.offsetX、event.offsetY

鼠标相对于事件源元素(srcElement)的X,Y坐标,只有IE事件有这2个属性,标准事件没有对应的属性。

event.screenX、event.screenY

鼠标相对于用户显示器屏幕左上角的X,Y坐标。标准事件和IE事件都定义了这2个属性

input 输入框的change事件,要在input失去焦点的时候才会触发!

$('input[name=myInput]').change(function() { ... });

在输入框内容变化的时候不会触发change,当鼠标在其他地方点一下才会触发

用下面的方法会生效,input

$("#input_id").on('input',function(e){     alert('Changed!')  });  
五 动画效果

5.1 基本  在动画完成后,可选地触发一个回调函数!

$("p").show()        //显示隐藏的匹配元素$("p").show("slow");    //参数表示速度,("slow","normal","fast"),也可为900毫秒$("p").hide()        //隐藏显示的元素$("p").toggle();      //切换 显示/隐藏$("p").stop()              //停止所有在指定元素上正在运行的动画。

实例 显示与隐藏

demo

实例 回调函数

demo

5.2 淡入淡出  在动画完成后,可选地触发一个回调函数!

$("p").fadeIn("900");        //用900毫秒时间将段落淡入$("p").fadeOut("900");       //用900毫秒时间将段落淡出$("p").fadeToggle("900");     //用900毫秒时间将段落淡入,淡出$("p").fadeTo("slow", 0.6);    //用900毫秒时间将段落的透明度调整到0.6

实例 淡入淡出

demo

5.3 滑动  在动画完成后,可选地触发一个回调函数!

$("p").slideDown("900");    //用900毫秒时间将段落滑下$("p").slideUp("900");     //用900毫秒时间将段落滑上$("p").slideToggle("900");  //用900毫秒时间将段落滑上,滑下

实例 滑动

demo

实例 京东轮播图

demo

实例 放大镜

demo

实例 编辑框

demo
六 对象访问
$.trim()   //去除字符串两端的空格$.each()   //遍历一个数组或对象,for循环$.inArray() //返回一个值在数组中的索引位置,不存在返回-1  $.grep()   //返回数组中符合某种标准的元素$.extend()  //将多个对象,合并到第一个对象$.makeArray() //将对象转化为数组$.type()    //判断对象的类别(函数对象、日期对象、数组对象、正则对象等等$.isArray() //判断某个参数是否为数组$.isEmptyObject() //判断某个对象是否为空(不含有任何属性)$.isFunction()    //判断某个参数是否为函数$.isPlainObject() //判断某个参数是否为用"{}"或"new Object"建立的对象$.support()       //判断浏览器是否支持某个特性

循环:json对象:

$.each( data, function(k,v){ .... } )return false  =>  breakreturn true  =>  continue

判断空object对象:

function isEmptyObject(e) {    var t;    for(t in e)        return !1;    return !0;}
七 插件扩展机制
//方式一    jQuery 可以简写成 $jQuery.fn.extend({    hello:function(){        return $(this).text();    }});var index = $('.title').hello()alert(index);<div class="title">1111</div><div class="title">2222</div>
//方式二$.extend({    hello1 :function(arg){        var index = $(arg).text();        return index;    }})var index = $.hello1('.title')alert(index)<div class="title">1111</div><div class="title">2222</div>

实例

demo
八 补充

1.input 事件, 输入时触发:

$('#inp').on('input',function(){});

2.文件上传input  变更时触发:

$(".upload").on("change","input[type='file']",function(){    ...});

3.ajax异步请求页面时,必须返回数据,不能在后台指定跳转页面

4.判断是否存在该标签:

$('xxx').length > 0

5.DOM对象、JQ对象 转换

获取 Dom对象document.getElementsTagName('div')[0]获取 JQuery对象$('div').first()Dom对象  =>  JQuery对象$(document.getElementsTagName('div')[0])JQuery对象  =>  Dom对象$('div').first()[0]

6.JSON 转换

JSON.parse(arg)       字符串=>原型JSON.stringify(arg)   原型=>字符串

 

 

练习题

demo 1:左侧菜单

demo 2:tab切换

demo 3:编辑框正反选

demo 4:返回顶部

demo 5:滚动菜单

demo 6:克隆方法的应用

demo 7:模态对话框

demo 8:拖动面板

demo 9:显示与隐藏

demo 10:淡入淡出

demo 11:滑动

demo 12:京东轮播图

demo 13:放大镜

demo 14:编辑框

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
jQuery() 方法
PHP教程(43)jQuery介绍+案例
常见前端面试题及答案(下)
jQuery参考手册
jQuery 选择器、DOM操作、事件、动画
jquery index() 方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服