Jquery 内容简介

内容简介

 内容简介

• 什么是Jquery

• 万能的选择器

• 管理jQuery包装集

• 使用jQuery操作元素的属性与样式

• 事件与事件对象

• jQuery中的Ajax

• jQuery动画-让页面动起来!

• 插播:jQuery实施方案

• jQuery工具函数

• jQueryUI常用功能实战

• 实战表单验证与自动完成提示插件

Jquery概述

• Jquery是一套Javascript脚本库

– JQuery == JavascriptLibrary

– Jquery != JavascriptFrameWork

•  提供了强大的功能函数

•  解决浏览器兼容性问题

•  实现丰富的UI

• …………

Jquery的选择器

• 一个简单的Jquery的功能实现

• var $=function(id){

return document.getElementById(id);}

Jquery的选择器

• 在Dom编程中只能使用有限的函数根据id或

者TagName获取Dom对象.

• jQuery提供了异常强大的选择器用来帮助

我们获取页面上的对象, 并且将对象 以

jQuery 包装集 的形式返回.

• 只有Jquery对象才能调用Jquery方法

•  通过索引器返回的不再是jQuery 包装集,  而

是一个Dom 对象

• “$”符号在jQuery中代表对jQuery对象的引用,

“jQuery”是核心对象 Returns: jQuery包装集

• $( html, ownerDocument )

– 根据HTML原始字符串动态创建Dom元素.

• $( elements )

– 将一个或多个Dom对象封装jQuery函数功能(即

封装为jQuery包装集)

• $( callback )

– $(document).ready()的简写方式

jQuery( selector, context )

• Selector 选择器 "选择"和"过滤".

• 选择 不会有默认的范围

• 过滤

– 指定条件从前面匹配的内容中筛选

– 可以单独使用, 表示从全部 ("*“) 中筛选

$(":[title]")等同于:$("*:[title]")

选择器示例

• $(“#divId") 选择ID为divId的元素

$(".bgRed") 选择所用CSS类为bgRed的元素

• $("a") 选择所有<a>元素

• $("*")  选择页面所有元素

• $(“#divId, a, .bgRed”)  依次选择对应元素

alert($($("#dv,.dv")[1]).text());

• $(".bgRed div")

– 选择CSS类为bgRed的元素中的所有<div>元素.

• $(".myList>li")

– 选择CSS类为myList元素中的直接子节点<li>对象.

• $("#hibiscus+img")

– 选在id为hibiscus元素后面的img对象.(同级节点)

• $("#someDiv~[title]")

– 选择id为someDiv的对象后面所有带有title属性

的元素

• $("tr:first") 查找表格的第一行

• $("tr:last“) 查找表格的最后一行

• $("input:not(:checked)")

• 查找所有未选中的 input

• $(“tr:even”) 查找表格的奇数行

• $(“tr:odd”) 查找表格的偶数行

• $(“tr:eq(1)”)  查找第二行 即索引值是1

• $("tr:gt(3)") 查找大于给定索引值的元素

• $(“tr:lt(3)”) 查找小于给定索引值的元素

• $(":header").css("background", "#EEE");

– 给页面内所有标题加上背景色

• $("#run").click(function(){

$("div:not(:animated)").animate({ left: "+=20" }, 1000);

});

– 只有对不在执行动画效果的元素执行一个动画特效

• $(“div:contains('John')")

– 查找所有包含 "John" 的 div 元素

• $("td:empty")

– 查找所有不包含子元素或者文本的空元素

• $("div:has(p)").addClass("test");

– 给所有包含 p 元素的 div 元素添加一个 text 类

• $("td:parent")

– 查找所有含有子元素或者文本的 td 元素

• $("tr:hidden")

– 查找所有不可见的 tr 元素

• $("tr:visible")

– 查找所有可见的 tr 元素

• $("div[id]")

– 查找含有 id 属性的 div 元素

• $("input[name='newsletter']").attr("checked", true);

– 查找 name 属性是 newsletter 的 input 元素

• $("input[name!='newsletter']").attr("checked", true);

– 查找 name 属性不是 newsletter 的 input 元素

• $("input[name^='news']")

– 查找 name 属性以news开头的 input 元素

• $("input[name$='letter']")

– 查找 name 属性以letter结尾的 input 元素

• $("input[name*='man']")

– 查找所有 name 包含 'man' 的 input 元素

• $("input[id][name$='man']")

– 找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的元素

• $("ul li:nth-child(2)")

– 在每个 ul 查找第 2 个li

• $("ul li:first-child")

– 在每个 ul 中查找第一个 li

• $("ul li:last-child")

– 在每个 ul 中查找最后一个 li

• $("ul li:only-child")

– 在 ul 中查找是唯一子元素的 li

• $(":input")  查找所有的input元素

• $(":text")

• Radio

• Checkbox

• Submit

• Image

• Reset

• Button

• File  查找所有文件域

• $("input:enabled")

– 查找所有可用的input元素

• $("input:disabled")

• $("input:checked")

• $("select option:selected")

– 查找所有选中的选项元素

Jquery 中的方法: 改变结果集:

• $('div').has('p');

– 选择包含p元素的div元素

• $('div').not('.myClass');

– 选择class不等于myClass的div元素

• $('div').filter('.myClass');

– 选择class等于myClass的div元素

• $('div').first();

– 选择第1个div元素

• $('div').eq(5);

– 选择第6个div元素

Jquery 中的方法:DOM树上的移动

• $('div').next('p');

– 选择div元素后面的第一个p元素

• $('div').parent();

– 选择div元素的父元素

• $('div').closest('form');

– 选择离div最近的那个form父元素

• $('div').children();

– 选择div的所有子元素

• $('div').siblings();

– 选择div的同级元素

• .end()方法,使得结果集可以后退一步

$('div')

.find('h3')

.eq(2)

.html('Hello')

.end() // 退回到选中所有的h3 元素

.eq(0) //选中第一个h3元素

.html('World'); //将它的内容改为World

元素的操作:取值和赋值

• 同一个函数,来完成取值和赋值

• 到底是取值还是赋值,由函数的参数决定。

• $('h1').html();

– html()没有参数,表示取出h1的值

• $('h1').html('Hello');

– html()有参数Hello,表示对h1进行赋值

常见的取值和赋值函数

• .html() 取出或设置html内容

• .text() 取出或设置text内容

• .attr() 取出或设置某个属性的值

• .width() 取出或设置某个元素的宽度

• .height() 取出或设置某个元素的高度

• .val() 取出某个表单元素的值

• 如果结果集包含多个元素,那么赋值的时候,

将对其中所有的元素赋值,取值的时候,则

是只取出第一个元素的值(.text()例外,它取

出所有元素的text内容)

元素的操作:移动

• 第一种方法是使用.insertAfter()

• 把div元素移动p元素后面:

• $('div').insertAfter('p');

• 第二种方法是使用.after()

• 把p元素加到div元素前面:

• $('p').after('div');

• 第一种方法返回div元素,第二种方法返回p

元素

• .insertAfter()和.after():

– 在现存元素的外部,从后面插入元素

• .insertBefore()和.before():

– 在现存元素的外部,从前面插入元素

• .appendTo()和.append():

– 在现存元素的内部,从后面插入元素

• .prependTo()和.prepend():

– 在现存元素的内部,从前面插入元素

元素的操作:复制、删除和创建

• 复制元素使用.clone()

• 删除元素使用.remove()和.detach()

– 前者不保留被删除元素的事件,后者保留,有

利于重新插入文档时使用。

• 清空元素内容(但是不删除该元素)使

用.empty()。

• 创建新元素的方法非常简单,只要把新元

素直接传入jQuery的构造函数

– $('<p>Hello</p>');

工具方法

• $.trim() 去除字符串两端的空格。

• $.each() 遍历一个数组或对象。

• $.inArray()

– 返回一个值在数组中的索引位置。如果该值不在数组中,则返回-

1。

• $.grep() 返回数组中符合某种标准的元素。

• $.extend() 将多个对象,合并到第一个对象。

• $.makeArray() 将对象转化为数组。

• $.type()

– 判断对象的类别(函数对象、日期对象、数组对象、正则对象等

等)。

• $.isArray()  判断某个参数是否为数组。

• $.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。

• $.isFunction() 判断某个参数是否为函数。

• $.isPlainObject() 判断某个参数是否为用"{}"或"new Object"建立的对象。

• $.support() 判断浏览器是否支持某个特性。

事件操作

• 事件直接绑定在网页元素之上。

$('p').click(function(){

alert('Hello');

});

jQuery主要支持以下事件

• .blur() 表单元素失去焦点。

• .change() 表单元素的值发生变化

• .click() 鼠标单击

• .dblclick() 鼠标双击

• .focus() 表单元素获得焦点

• .focusin() 子元素获得焦点

• .focusout() 子元素失去焦点

• .hover()

– 同时为mouseenter和mouseleave事件指定处理函数

• .keydown() 按下键盘(长时间按键,只返回一个事件)

• .keypress() 按下键盘(长时间按键,将返回多个事件)

• .keyup() 松开键盘

• .load() 元素加载完毕

• .mousedown() 按下鼠标

• .mouseenter() 鼠标进入(进入子元素不触发)

• .mouseleave() 鼠标离开(离开子元素不触发)

• .mousemove() 鼠标在元素内部移动

• .mouseout() 鼠标离开(离开子元素也触发)

• .mouseover() 鼠标进入(进入子元素也触发)

• .mouseup() 松开鼠标

• .ready() DOM加载完成

• .resize() 浏览器窗口的大小发生改变

• .scroll() 滚动条的位置发生变化

• .select() 用户选中文本框中的内容

• .submit() 用户递交表单

• .toggle() 根据鼠标点击的次数,依次运行多个函数

• .unload() 用户离开页面

• 这些事件在jQuery内部,都是.bind()的便捷

方式。

• 使用.bind()可以更灵活地控制事件

• //同时绑定click和change事件

$(‘input’).bind(‘click change’, function() {

alert(‘Hello’);});

• //只运行一次,以后的点击不会运行

$("p").one("click", function() {

alert(“Hello”); });

• //.unbind()用来解除事件绑定。

$('p').unbind('click');

• 所有的事件处理函数,都可以接受一个事

件对象(event object)作为参数,比如下

面例子中的e:

$("p").click(function(e) {

alert(e.type);});

• event.pageX 事件发生时,鼠标距离网页左上角的水平距离

• event.pageY 事件发生时,鼠标距离网页左上角的垂直距离

• event.type 事件的类型(比如click)

• event.which 按下了哪一个键

• event.data 在事件对象上绑定数据,然后传入事件处理函数

• event.target 事件针对的网页元素

• event.preventDefault() 阻止事件的默认行为(比如点击链

接,会自动打开新页面)

• event.stopPropagation() 停止事件向上层元素冒泡

• 在事件处理函数中,可以用this关键字,返

回事件针对的DOM元素:

$(‘a’).click(function() {

if ($(this).attr('href').match('evil')) {

//如果确认为有害链接

e.preventDefault(); //阻止打开

$(this).addClass('evil'); //加上表示有害的class}});

• 有两种方法,可以自动触发一个事件。一

种是直接使用事件函数,另一种是使

用.trigger()或.triggerHandler()。

$('a').click();

$('a').trigger('click');

特殊效果

• .fadeIn() 淡入

• .fadeOut() 淡出

• .fadeTo() 调整透明度

• .hide() 隐藏元素

• .show() 显示元素

• .slideDown() 向下展开

• .slideUp() 向上卷起

• .slideToggle() 依次展开或卷起某个元素

• .toggle() 依次展示或隐藏某个元素

• 除了.show()和.hide(),所有其他特效的默认

执行时间都是400ms(毫秒)

– $('h1').fadeIn(300); // 300毫秒内淡入

– $('h1').fadeOut('slow'); // 缓慢地淡出

• 在特效结束后,可以指定执行某个函数。

$('p').fadeOut(300, function() { $(this).remove(); });

• 更复杂的特效,可以用.animate()自定义

$(‘div’).animate({left : “+=50”, opacity : 0.25}, 300, function(){

alert(‘done!’); });

• .stop()和.delay()用来停止或延缓特效的执行。

• $.fx.off如果设置为true,则关闭所有网页特

效。

一样的选择器不一样的性能

•  最快的选择器:id 选择器和元素标签选择器

– $('#id')

jQuery会自动调用浏览器的原生方法(getElementById()),

所以它们的执行速度快。

•  较慢的选择器:class 选择器

– $('.className') 

• FF Safari Chrome Opera getElementByClassName()

• IE中会相当慢 

•  最慢的选择器:伪类选择器和属性选择器

– $(':hidden') $('[attribute=value]')

• 没有原生方法

•  不要过度使用jQuery

– jQuery速度再快,也无法与原生的javascript方

法相比。所以有原生方法可以使用的场合,尽

量避免使用jQuery。

• $('a').click(function(){

alert($(this).attr('id'));

});

$('a').click(function(){

alert(this.id);

});

this.id的速度比$(this).attr('id')快了20多倍

•  做好缓存  快2-3 倍

– var cached = jQuery('#top');

cached.find('p.classA');

•  使用链式写法  快了25%

– $('div').find('h3').eq(2).html('Hello');

•  少改动DOM 结构  快了60%

– 如果你要对一个DOM元素进行大量处理,应该先用.detach()方法

原文地址:https://www.cnblogs.com/huangf714/p/5915057.html