当前位置: 首页 > news >正文

福州网站建设联系时事在福州建设项目管理公司

福州网站建设联系时事在,福州建设项目管理公司,dede网站下载,附近机械零件加工厂来源于#xff1a;http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先#xff0c;来了解一下jQuery学习的整体思路 第一节 jQuery初步认知 jQuery概述 JQuery概念 javascript概念 基于Js语言的API和语法组织逻辑#xff0c;通…来源于http://blog.poetries.top/2016/10/20/review-jQuery/ http://www.jianshu.com/p/f8e3936b34c9 首先来了解一下jQuery学习的整体思路 第一节 jQuery初步认知 jQuery概述 JQuery概念 javascript概念 基于Js语言的API和语法组织逻辑通过内置window和document对象来操作内存中的DOM元素JQuery概念 基于javascript的同上提高了代码的效率 jQuery是什么: 是一个javascript代码仓库我们称之为javascript框架。是一个快速的简洁的javascript框架可以简化查询DOM对象、处理事件、制作动画、处理Ajax交互过程。它可以帮我们做什么(有什么优势) 轻量级、体积小使用灵巧(只需引入一个js文件)强大的选择器出色的DOM操作的封装出色的浏览器兼容性可靠的事件处理机制完善的Ajax链式操作、隐式迭代方便的选择页面元素(模仿CSS选择器更精确、灵活)动态更改页面样式/页面内容(操作DOM动态添加、移除样式)控制响应事件(动态添加响应事件)提供基本网页特效(提供已封装的网页特效方法)快速实现通信(ajax)易扩展、插件丰富 如何引入JQuery包 引入本地的JQuery引入Google在线提供的库文件稳定可靠高速 使用Google提供的API导入 script type“text/javascript” src“jquery.js”/script 写第一个JQUery案例 解释:在JQuery库中$是JQuery的别名$()等效于就jQuery() 1 2 3 4 5 6 script type“text/javascript” src“”/script script type“text/javascript” $(function(){ alert(“jQuery 你好!”); }); /script 讲解$(function(){}); $是jQuery别名。如$()也可jQuery()这样写,相当于页面初始化函数当页面加载完毕会执行jQuery()。希望在做所有事情之前JQuery操作DOM文档。必须确保在DOM载入完毕后开始执行应该用ready事件做处理HTML文档的开始$(document).ready(function(){}); 类似于js的window.onload事件函数但是ready事件要先于onload事件执行window.onload function(){}; 为方便开发jQuery简化这样的方法直接用$()表示 JQuery的ready事件不等于Js的load 执行时机不同load需要等外部图片和视频等全部加载才执行。ready是DOM绘制完毕后执行先与外部文件用法不同load只可写一次ready可以多次window.onload与$(document).ready()对比 window.onload$(document).ready()执行时机必须等网页中所有内容加载完后(图片)才执行网页中的DOM结构绘制完后就执行,可能DOM元素相关的东西并没有加载完编写个数不能同时执行多个能同时执行多个简化写法无$(document).ready(function(){ //.. });推荐写法$(function(){ }); jQuery有哪些功能(API) 选择器过滤器事件效果ajax 简单的JQuery选择器 JQuery基本选择器ID选择器标签选择器类选择器通配选择器和组选择器5种ID选择器document.getElementById(id)与$(#id)对比(改变文字大小)—id唯一返回单个元素标签选择器document.getElementsByTagName(tagName)与$(tagname)对比—多个标签返回数组类选择器:$(.className)–多个classname改变背景图片通配选择器document.getElementsByTagName(*)与$(*)对比—指范围内的所有标签元素组选择器$(seletor1,seletor2,seletor3)—-无数量限制用逗号分割初步了解JQuery JQuery是什么 javascript用来干什么的 操作DOM对象动态操作样式css数据访问控制响应事件等jQuery作用一样只是更加快速简洁 如何引用JQuery 1 2 3 4 5 6 7 8 script typetext/javascript/script 写第一个JQUery案例 script type“text/javascript” src“”/script script type“text/javascript” $(function(){ alert(“jQuery 你好!”); }); /script $()讲解 $在JQuery库中$是JQuery的别名$()等效于就jQuery().$()是JQuery方法,赞可看作是JQuery的选择器与css选择器相似可做对比var jQuery$ function(){} $()本质就是一个函数也就是 jQuery的核心函数只要是jQuery的对象都这样变量加上一个符号$方便识别var $div $(#) 1 2 3 function $(id){ return document.getElementById(id); } $()和document是相等的吗 1 2 3 4 5 div ida classaa/div div idb classaa/div div idc classaa/div alert(document.getElementById(id) $(#aa));//返回结果为false alert(document.getElementById(id) $(#aa).get(0));//返回true 代理对象$() jQuery中返回的是代理对象本身jQuery的核心原理是通过选择器找到对应的代理对象jQuery全都是通过方法操作样式选择器$(.className) $(.aa).css(color,green);id选择器(“”) $(#a).css(background-color,#ff0066);标签选择器 $(p).css(color,#cc3366);组选择器 $(#b ul li).size(); 对象转换($(element)) 原生dom对象和jquery代理对象的相互转换 1 2 3 4 5 $(传入的原生对象); //原生对象转化成jQuery对象 var nav document.getElementById(nav); var $nav $(nav); alert($nav.get(0) nav);//true 检索范围的限制$(字符串,element) 总结三种写法对比 方式一不推荐 搜索速度最慢 $(#nav).css();$(#nav li).css(); 方式二搜索速度最快 链式操作 $(#nav).css().children().css(); 方式三也常用 速度第二快 var $nav $(#nav).css();$(li,$nav).css(); $nav限制了搜索范围 速度快 总结 $() jquery核心方法的作用和使用场景 如果是一个字符串参数并且没有标签对选择器$(ul.nav)如果是一个字符串参数并且有标签对创建html标签$(img) –最终加到DOM树中 $xx.append(img);如果是传入一个element dom对象直接包装为proxy对象返回 $(DOM对象)如果第一个参数是字符串第二个是element dom对象的话那么就是在element这个dom对象里面寻找选择器对应的元素并且代理 $(li,$DOM对象)代理模式以及代理内存结构 第二节 选择器 来回顾一下CSS常用的选择器选择器语法描述标签选择器E{css规则}以文档元素作为选择符ID选择器#ID{css规则}ID作为选择符类选择器E.className{css规则}class作为选择符群组选择器E1,E2,E3{css规则}多个选择符应用同样的样式后代选择器E F{css规则}元素E的任意后代元素F 选择器引擎规则($(字符串)) css选择器的规则 标签选择器id选择器类选择器混合选择器 css3的选择器规则 状态和伪类:even :odd :first :last :eq(index) 属性[attrvalue]层级选择器:通过DOM的嵌套关系匹配元素 jQuery层级选择器—-包含选择器、子选择器、相邻选择器、兄弟选择器4种a.包含选择器$(a b)在给定的祖先元素下匹配所有后代元素。(不受层级限制)b.子选择器$(parent child)在给定的父元素下匹配所有子元素。c.相邻选择器$(prev next) 匹配所有紧接在prev元素后的next元素。d.兄弟选择器$(prev ~ siblings) 匹配prev元素之后的所有sibling元素。过滤选择器 基本过滤选择选择器说明返回:first匹配找到的第1个元素单个元素:last匹配找到的最后一个元素单个元素:eq匹配一个给定索引值的元素单个元素:even匹配所有索引值为偶数的元素集合元素: odd匹配所有索引值为奇数的元素集合元素:gt(index)匹配所有大于给定索引值的元素集合元素:lt(index)匹配所有小于给定索引值的元素集合元素:not去除所有与给定选择器匹配的元素集合元素:animated选取当前正在执行动画的所有元素集合元素focus选取当前正在获取焦点的元素集合元素内容过滤选择器选择器描述返回:contains(text)选取含有文本内容为text的元素集合元素:empty选取不包含子元素获取文本的空元素集合元素:has(selector)选择含有选择器所匹配的元素的元素集合元素:parent选取含有子元素或者文本的元素集合元素可见过滤选择器选择器描述返回:hidden选择所有不可见的元素集合元素:visible选取所有可见的元素集合元素属性过滤选择器选择器说明返回[attribute]选取拥有此属性的元素集合元素[attributevalue]选取属性值为value值的元素集合元素[attribue^value]选取属性的值以value开始的元素集合元素[attribue$value]选取属性的值以value结束的元素集合元素子元素过滤选择器选择器说明返回:nth-child(index/even/odd)选取每个父元素下的第index个子元素或者奇偶元素index从1算起集合元素:first-child选取每个元素的第一个子元素集合元素:last-child选取每个元素的最后一个子元素集合元素 :nth-child()选择器是很常用的子元素过滤选择器如下 :nth-child(even)选择每个父元素下的索引值是偶数的元素:nth-child(odd)选择每个父元素下的索引值是奇数的元素:nth-child(2)选择每个父元素下的索引值是2的元素:nth-child(3n)选择每个父元素下的索引值是3的倍数的元素 (n从1开始) 表单对象属性过滤选择器 选择器说明返回:enabled选取所有可用元素集合元素:disabled选取所有不可用元素集合元素:checked选取所有被选中的元素单选框、复选框集合元素:selected选取所有被选中的元素下拉列表集合元素表单选择器选择器说明:input选取所有input textarea select button元素:text选取所有单行文本框:password选取所有密码框:radio选取所有单选框:checkbox选取所有多选框:submit选取所有的提交按钮:image选取所有的图像按钮:reset选取所有的重置按钮:button选取所有的按钮:file选取所有的上传域:hidden选取所有的不可见元素 特定位置选择器 :first:last:eq(index) 指定范围选择器 :even:odd:gt(index):lt(index) 排除选择器 :not 非第三节 选择器优化 使用合适的选择器表达式可以提高性能、增强语义并简化逻辑。常用的选择器中ID选择器速度最快其次是类型选择器。 a. 多用ID选择器b. 少直接使用class选择器c. 多用父子关系少用嵌套关系d. 缓存jQuery对象 使用过滤器 jQuery提供了2种选择文档元素的方式选择器和过滤器a. 类过虑器根据元素的类属性来进行过滤操作。 hasClass(className)判断当前jQuery对象中的某个元素是否包含指定类名包含返回true不包含返回falseb. 下标过滤器精确选出指定下标元素 eq(index)获取第N个元素。index是整数值下标从0开始c. 表达式过滤器 filter(expr)/(fn)筛选出与指定表达式/函数匹配的元素集合。功能最强大的表达式过滤器可接收函数参数也可以是简单的选择器表达式d. 映射 map(callback)将一组元素转换成其他数组e. 清洗 not(expr)删除与指定表达式匹配的元素f. 截取 slice(start,end)选取一个匹配的子集 查找 向下查找后代元素 children():取得所有元素的所有子元素集合子元素find():搜索所有与指定表达式匹配的元素(所有后代元素中查找)查找兄弟元素 siblings()查找当前元素的兄弟第四节 代理对象属性和样式操作 代理对象属性和样式操作 attrprop(一般属性值是boolean的值或者不用设置属性值一般使用)css(最好不用一般我用来做测试)addClass / removeClass 操作原生DOM的时候用的方式一次只能操作一个 操作属性setAttribute / getAttribute操作样式style.xx value操作类样式className获取DOM的子元素children属性DOM里面添加一个子元素appendChild() 操作jQuery代理对象的时候批量操作DOM对象(全都是通过方法操作) 操作属性attr()、prop() attr和prop区别如果属性的值是布尔类型的值 用prop操作 反之attr 操作样式css() 操作类样式addClass() removeClass()操作DOM子元素children()添加子元素append()第五节 jQuery中DOM操作 DOM是一种与浏览器、平台|语言无关的接口使用该接口可以轻松的访问 页面中的所有的标准组件 DOM操作的分类 DOM Core DOM core并不专属于JavaScript任何支持DOM的程序都可以使用JavaScript 中的getElementByID() getElementsByTagName() getAttribute() setAttribute()等方法都是DOM Core的组成部分 HTML-DOM HTML -DOM的出现比DOM-Core还要早它提供一些更简明的标志来描述HTML元素的属性比如使用HTML-DOM来获取某元素的src属性的方法 element.src CSS-DOM 针对CSS的操作。在JavaScript中主要用于获取和设置style对象的各种属性通过改变style对象的属性使网页呈现不同的效果 查找节点 查找属性节点 attr() 可以获取各属性的值创建节点 $(html)根据传递的标记字符串创建DOM对象插入节点方法说明append()向每个匹配元素内部追加内容appendTo()颠倒append()的操作prepend()向每个匹配元素的内容内部前置内容prependTo()颠倒prepend()的操作after()向每个匹配元素之后插入内容insertAfter()颠倒after()的操作before()在每个匹配元素之前插入内容insertBefore()颠倒before()的操作 删除节点 jQuery提供了三种删除节点的方法 remove() detach() empty()remove()方法 当某个节点用此方法删除后该节点所包含的所有后代节点将同时被删除用remove()方法删除后还是可以继续使用删除后的引用detach() 和remove()方法一样也是从DOM中去掉所有匹配的元素与remove()不同的是所有绑定的事件、附加的数据等都会被保留下来empty() empty()方法并不是删除节点而是清空节点它能清空元素中所有后代节点 复制节点 使用clone()方法来完成在clone()方法中传递一个参数true同时复制元素中所绑定的事件 替换节点 jQuery提供相应的方法 replaceWidth() 样式操作 获取样式和设置样式 attr()追加样式 addClass()移除样式 removeClass()切换样式 toggle()方法只要是控制行为上的重复切换如果元素是显示的则隐藏如果元素原来是隐藏的则显示toggleClass()方法控制样式上的重复切换如何类名存在则删除它如果类名不存在则添加它判断是否含有某个样式 hasClass()可以用来判断元素是否含有某个class,如有返回true 该方法等价于is() 设置和获取HTML、文本和值 html() 此方法类似JavaScript中innerHTML属性可以用来读取和设置某个元素中的HTML内容text()方法 此方法类型JavaScript中innerHTML用来读取和设置某个元素中的文本内容val()方法 此方法类似JavaScript中的value属性用来设置获取元素的值。无论是文本框、下拉列表还是单选框都可以返回元素的值如果元素多选返回一个包含所有选择的值的数组 遍历节点 children()方法 该方法用来取得匹配元素的子元素集合childre()方法只考虑子元素而不考虑其他后代元素next()方法 该方法用于取得匹配元素后面紧邻的同辈元素prev()方法 用于匹配元素前面紧邻的同辈元素siblings()方法 用于匹配元素前后所有的同辈元素parent()方法 获得集合中每个 元素的父级元素parents()方法 获得集合中每个元素的祖先元素CSS DOM操作 CSS DOM技术简单的来说就是读取和设置style对象的各种属性用css()方法获取元素的样式属性可以同时设置多个样式属性CSS DOM中关于元素定位有几个常用的方法 offset()方法 它的作用是获取元素在当前视窗的相对偏移其中返回的对象包含两个属性即top和left他只对可见元素有效position()方法 获取相对于最近的一个position()样式属性设置为relative或者absolute的祖父节点的相对偏移与offset()一样他返回的对象也包括两个属性即top和leftscrollTop()方法和scrollLeft方法 这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离一张图总结以上的位置关系(项目中很常用-必须要弄清楚) 第六节 jQuery动画 回顾上节 操作DOM a.什么是DOMDocument Object Model缩写文档对象模型b.理解页面的树形结构c.什么是节点是DOM结构中最小单元包括元素、属性、文本、文档等。一、创建节点 1.创建元素 语法document.createElement(name); 1 2 var div document.createElement(div); document.body.appendChild(div); $(html)根据传递的标记字符串创建DOM对象 2.创建文本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 var div document.createElement(div); var txt document.createTextNode(DOM); div.appendChild(txt); document.body.appendChild(div); var $div $(divDOM/div); $(body).append($div); - 3.设置属性 - 语法e.setAttrbute(name,value) javascript var div document.createElement(div); var txt document.createTextNode(DOM); div.appendChild(txt); document.body.appendChild(div); div.setAttribute(title,盒子); var $div $(div title盒子DOM/div); $(body).append($div); 二、插入内容 内部插入 向元素最后面插入节点 append():向每个匹配的元素内部追加内容appendTo():把所有匹配的元素追加到指定元素集合中$(A).append(B)等效 $(B).appendTo(A)向元素最前面插入节点 prepend把每个匹配的元素内部前置内容prependTo把所有匹配的元素前置到另一个指定的元素集合中,$(A).prepend(B) 等效 $(B).prependTo(A) 外部插入 after():在每个匹配的元素之后插入内容before()在每个匹配想元素之前插入内容insertAfter()将所有匹配的元素插入到另一个指定的元素集合后面$A.insert($B) 等效$B.insertAfter($A);insertBefore()将所有匹配的元素插入到另一个指定的元素集合前面 $A.before($B) 等效 $B.insertBefore($A);三、删除内容 移除 remove():从DOM中删除所有匹配元素清空 empty():删除匹配的元素集合中所有子节点内容四、克隆内容创建指定节点副本 clone() 注意若clonetrue则是包括克隆元素的属性事件等五、替换内容 replaceWith():将所有匹配的元素替换成指定的元素replaceAll():用匹配的元素替换掉指定元素注意两者效果一致只是语法不同 $A.replaceAll($B)等效于 $B.replaceWhith($A);本节新知识 JavaScript语言本身不支持动画设计必须通过改变CSS来实现动画效果显隐动画 show():显示 hide():隐藏 原理hide()通过改变元素的高度宽度和不透明度直到这三个属性值到0show()从上到下增加元素的高度从左到右增加元素宽度从0到1增加透明度直至内容完全可见参数 show(speed,callback) speed: 字符串或数字表示动画将运行多久slow0.6/normal0.4/fast0.2callback: 动画完成时执行的方法 显示和隐藏式一对密不可分的动画形式 显隐切换 toggle():切换元素的可见状态 原理匹配元素的宽度、高度以及不透明度同时进行动画隐藏动画后将display设置为none参数 toggle(speed)toggle(speed,callback)toggle(boolean) speed: 字符串或数字表示动画将运行多久slow0.6/normal0.4/fast0.2easing 使用哪个缓冲函数来过渡的字符串(linear/swing)callback 动画完成时执行的方法boolean:true为显示 false为隐藏滑动 显隐滑动效果 slideDown():滑动隐藏 slidUp():滑动显示 参数: slideDown(speed,callback)slidUp(speed,callback) 显隐切换滑动 slideToggle():显隐滑动切换参数: slidUp(speed,callback)渐变通过改变不透明度 淡入淡出 fadeIn() fadeOut() 参数 fadeIn(speed,callback)fadeOut(speed,callback) 设置淡出透明效果 fadeTo()以渐进的方式调整到指定透明度 参数 fadeTo(speed,opacity,callback) 渐变切换:结合fadeIn和fadeOut fadeToggle() 参数: fadeOut(speed,callback)自定义动画animate() 注意在使用animate方法之前为了影响该元素的top left bottom right样式属性必须先把元素的position样式设置为relative或者absolute停止元素的动画 很多时候需要停止匹配正在进行的动画需要使用stop()stop()语法结构stop([clearQueue],[gotoEnd]); 都是可选参数为布尔值如果直接使用stop()方法会立即停止当前正在进行的动画判断元素是否处于动画状态 如果不处于动画状态则为元素添加新的动画否则不添加if(!$(element).is(:animated)){ //判断元素是否处于动画状态}这个方法在animate动画中经常被用到需要注意延迟动画 在动画执行过程中如果你想对动画进行延迟操作那么使用delay() 用animate模拟show(): show: 表示由透明到不透明toggle: 切换hide:表示由显示到隐藏 动画方法总结 方法名说明hide()和show()同时修改多个样式属性即高度和宽度和不透明度fadeIn()和fadeOut()只改变不透明度slideUp()和slideDown()只改变高度fadeTo()只改变不透明度toggle()用来代替show()和hide()方法所以会同时修改多个属性即高度、宽度和不透明度slideToggle()用来代替slideUp和slideDown()方法所以只能改变高度fadeToggle()用来代替fadeIn()和fadeOut方法只能改变不透明度animate()属于自定义动画以上各种动画方法都是调用了animate方法。此外用animate方法还能自定义其他的样式属性例如left marginLeft scrollTop等第七节 jQuery中的事件 事件对象的属性 event.type获取事件的类型event.target:获取到触发事件的元素event.preventDefault方法 阻止默认事件行为event.stopPropagation()阻止事件的冒泡 keyCode只针对于keypress事件获取键盘键数字 按下回车13 event.pageX / event.pageY 获取到光标相对于页面的x坐标和y坐标 如果没有jQuery在IE浏览器中用event.x / event.y;在Firefox浏览器中用event.pageX / event.pageY。如果页面上有滚动条还要加上滚动条的宽度和高度 event.clientX光标对于浏览器窗口的水平坐标 浏览器 event.clientY光标对于浏览器窗口的垂直坐标 event.screenX光标对于电脑屏幕的水平坐标 电脑屏幕 event.screenY光标对于电脑屏幕的水平坐标event.which 该方法的作用是在鼠标单击事件中获取到鼠标的左、中、右键在键盘事件中的按键 1代表左键 2代表中键 3代表右键 事件冒泡 什么是冒泡 在页面上可以有多个事件也可以多个元素影响同一个元素从里到外嵌套关系相同事件其中的某一父类没有相同事件时,继续向上查找停止事件冒泡 停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行在jQuery中提供了stopPropagation()方法阻止默认行为 网页中元素有自己的默认行为例如单击超链接后会跳转、单击提交后表单会提交有时需要阻止元素的默认行为在jQuery中提供了preventDefault()方法来阻止元素的默认行为事件捕获 事件捕获和冒泡是相反的过程事件捕获是从最顶端往下开始触发并非所有的浏览器都支持事件捕获并且这个缺陷无法通过JavaScript来修复。jQuery不支持事件捕获如需要用事件捕获要用原生的JavaScript bind();绑定 为匹配元素绑定处理方法 需要给一个元素添加多个事件 事件执行一样时候 one()只执行一次绑定特定事件类型方法分类方法名称说明页面载入ready(fn)当DOM载入就绪可以绑定一个要执行的函数事件绑定blind(type,[data],fn)为每个匹配元素的特定事件绑定一个事件处理函数事件绑定unblind()解除绑定事件绑定on(events,[,selector[,]data],handler)在选择元素上绑定一个或者多个事件处理函数事件绑定off()移除on绑定的事件事件绑定delegate(selector,eventType,handler)为所有选择匹配元素附加一个或多个事件处理函数事件绑定undelegate()移除绑定事件动态live(type,fn)对动态生成的元素进行事件绑定事件动态die(type,fn)移除live()绑定的事件交互事件hover()鼠标移入移出交互事件toggle(fn1,fn2,[fn3],[fn4])每单击后依次调用函数交互事件blur(fn)触发每一个匹配元素的blur事件交互事件change()触发每一个匹配元素的change事件交互事件click()触发每一个匹配元素的click事件交互事件focus()触发每一个匹配元素的focus事件交互事件submit()触发每一个匹配元素的submit事件键盘事件keydown()触发每一个匹配元素的keydown事件键盘事件keypress()触发每一个匹配元素的keypress事件键盘事件keyup()触发每一个匹配元素的keyup事件鼠标事件mousedown(fn)绑定一个处理函数鼠标事件mouseenter(fn)绑定一个处理函数键盘事件mouseleave(fn)绑定一个处理函数键盘事件mouseout(fn)绑定一个处理函数键盘事件mouseover(fn)绑定一个处理函数窗口操作resize(fn)绑定一个处理函数窗口操作scroll(fn)绑定一个处理函数第八节 jQuery与Ajax Ajax简介 : Asynchronous Javascript And XML 异步的JavaScript和XML它并不是一种单一的技术而是有机利用一系列交互式网页应用相关的技术所形成的结合体Ajax优势与不足 Ajax优势 优秀的用户体验 这是Ajax下最大的有点能在不刷新整个页面前提下更新数据提高web程序的性能 与传统模式相比Ajax模式在性能上最大的区别在于传输数据的方式在传统模式中数据的提交时通过表单来实现的。Ajax模式只是通过XMLHttpRequest对象向服务器提交希望提交的数据即按需发送减轻服务器和带宽的负担 Ajax的工作原理相当于在用户和服务器之间加了一个中间层似用户操作与服务器响应异步化。它在客户端创建Ajax引擎把传统方式下的一些服务器负担的工作转移到客户端便于客户端资源来处理减轻服务器和带宽的负担Ajax的不足 浏览器对XMLHttpRequest对象的支持度不足破坏浏览器前进、后退按钮的正常功能对搜索引擎的支持的不足开发和调试工具的缺乏创建一个Ajax请求 Ajax的核心是XMLHttpRequest对象它是Ajax实现的关键发送异步请求、接受响应以及执行回调都是通过它来完成 创建ajax对象 var xhr new XMLHttpRequest(); 准备发送请求 get / post get 传递的数据放在URL后面中文编码 encodeURI( );缓存 在数据后面加上随机数或者日期对象或者…… post 传递的数据放在send()里面并且一定要规定数据格式没有缓存问题 form表单中: action: method: (默认是get)get: 会在url里面以 namevalue , 两个数据之间用  连接post:enctype: application/x-www-form-urlencoded url 是否异步 同步(false)阻塞异步(true)非阻塞 正式发送请求 ajax请求处理过程 1 2 3 4 5 6 xhr.onreadystatechange function(){ if (xhr.readyState 4) { alert( xhr.responseText ); } }; onreadystatechange 当处理过程发生变化的时候执行下面的函数 readyState ajax处理过程 0请求未初始化还没有调用 open()。1请求已经建立但是还没有发送还没有调用 send()。2请求已发送正在处理中通常现在可以从响应中获取内容头。3请求在处理中通常响应中已有部分数据可用了但是服务器还没有完成响应的生成。4响应已完成您可以获取并使用服务器的响应了。 responseText 请求服务器返回的数据存在该属性里面 status : http状态码 案例ajax封装案例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 //ajax请求后台数据 var btn document.getElementsByTagName(input)[0]; btn.onclick function(){ ajax({//json格式 type:post, url:post.php, data:usernamepoetriespwd123456, asyn:true, success:function(data){ document.write(data); } }); } //封装ajax function ajax(aJson){ var ajx null; var type aJson.type || get; var asyn aJson.asyn || true; var url aJson.url; // url 接收 传输位置 var success aJson.success;// success 接收 传输完成后的回调函数 var data aJson.data || ;// data 接收需要附带传输的数据 if(window.XMLHttpRequest){//兼容处理 ajx new XMLHttpRequest();//一般浏览器 }else { ajx new ActiveXObject(Microsoft.XMLHTTP);//IE6 } if (type get data) { url /?dataMath.random(); } //初始化ajax请求 ajx.open( type , url , asyn ); //规定传输数据的格式 ajx.setRequestHeader(content-type,application/x-www-form-urlencoded); //发送ajax请求包括post数据的传输 type get ?ajx.send():ajx.send(aJson.data); //处理请求 ajx.onreadystatechange function(aJson){ if(ajx.readState 4){ if (ajx.status 200 ajx.status300)//200是HTTP 请求成功的状态码 { //请求成功处理数据 success success(ajx.responseText); }else{ alert(请求出错ajx.status); } } }; jQuery中的Ajax [补充部分–来自锋利的jQuery] jquery对Ajax操作进行了封装在jquery中的$.ajax()方法属于最底层的方法第2层是load()、$.get()、$.post();第3层是$.getScript()、$.getJSON()第2层使用频率很高 load()方法 load()方法是jquery中最简单和常用的ajax方法能载入远程HTML代码并插入DOM中 结构为load(url,[data],[callback]) 使用url参数指定选择符可以加载页面内的某些元素 load方法中url语法url selector 注意url和选择器之间有一个空格传递方式 load()方法的传递方式根据参数data来自动指定如果没有参数传递则采用GET方式传递反之采用POST回调参数 必须在加载完成后才执行的操作该函数有三个参数 分别代表请求返回的内容、请求状态、XMLHttpRequest对象只要请求完成回调函数就会被触发 1 2 3 4 5 $(#testTest).load(test.html,function(responseText,textStatus,XMLHttpRequest){ //respnoseText 请求返回的内容 //textStatus 请求状态 sucess、error、notmodified、timeout //XMLHttpRequest }) load方法参数参数名称类型说明urlString请求HTML页面的URL地址data(可选)Object发送至服务器的key / value数据callback(可选)Function请求完成时的回调函数无论是请求成功还是失败$.get()和$.post()方法 load()方法通常用来从web服务器上获取静态的数据文件。在项目中需要传递一些参数给服务器中的页面那么可以使用$.get()和$.post()或$.ajax()方法 注意$.get()和$.post()方法是jquery中的全局函数 $.get()方法 $.get()方法使用GET方式来进行异步请求结构为$.get(url,[data],callback,type) 如果服务器返回的内容格式是xml文档需要在服务器端设置Content-Type类型 代码如下header(Content-Type:text/xml:charsetutf-8) //php$.get()方法参数解析参数类型说明urlString请求HTML页的地址data(可选)Object发送至服务器的key/ value 数据会作为QueryString附加到请求URL中callback(可选)Function载入成功的回调函数只有当Response的返回状态是success才调用该方法type(可选)String服务器返回内容的格式包括xml、html、script、json、text和_default $.post()方法 它与$.get()方法的结构和使用方式相同有如下区别 GET请求会将参数跟张乃URL后进行传递而POST请求则是作为Http消息的实体内容发送给web服务器在ajax请求中这种区别对用户不可见 GET方式对传输数据有大小限制通常不能大于2KB而使用POST方式传递的数据量要比GET方式大得多理论不受限制GET方式请求的数据会被浏览器缓存起来因此其他人可以从浏览器的历史纪录中读取这些数据如账号、密码。在某种情况下GET方式会带来严重的安全问题而POST相对来说可以避免这些问题GET和POST方式传递的数据在服务端的获取也不相同。在PHP中GET方式用$_GET[]获取POST方式用$_POST[]获取;两种方式都可用$_REQUEST[]来获取 总结 使用load()、$.get()和$.post()方法完成了一些常规的Ajax程序如果还需要复杂的Ajax程序就需要用到$.ajax()方式$.ajax()方法 $.ajax()方法是jquery最底层的Ajax实现它的结构为$.ajax(options)该方法只有一个参数但在这个对象里包含了$.ajax()方式所需要的请求设置以及回调函等信息参数以key / value存在所有参数都是可选的$.ajax()方式常用参数解析参数类型说明urlString(默认为当前页地址)发送请求的地址typeString请求方式POST或GET默认为GETtimeoutNumber设置请求超时时间毫秒dataTypeString预期服务器返回的类型。可用的类型如下xml:返回XML文档可用jquery处理html:返回纯文本的HTML信息包含的script标签也会在插入DOM时执行script返回纯文本的javascript代码。不会自动缓存结果除非设置cache参数。注意在远程请求时所有的POST请求都将转为GET请求json:返回JSON数据jsonp:JSONP格式使用jsonp形式调用函数时例如myurl?call back?,jquery将自动替换后一个为正确的函数名以执行回调函数text:返回纯文本字符串beforeSendFunction发送请求前可以修改XMLHttpRequest对象的函数例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次Ajax请求。XMLHttpRequest对象是唯一的参数function(XMLHttpRequest){         this;//调用本次Ajax请求时传递的options参数}completeFunction请求完成后的回调函数请求成功或失败时都调用参数XMLHttpRequest对象和一个描述成功请求类型的字符串function(XMLHttpRequest,textStatus){         this;//调用本次Ajax请求时传递的options参数}successFunction请求成功后调用的回调函数有两个参数(1)由服务器返回并根据dataTyppe参数进行处理后的数据(2)描述状态的字符串function(data,textStatus){         //data可能是xmlDoc、jsonObj、html、text等         this;//调用本次Ajax请求时传递的options参数}errorFunction请求失败时被调用的函数globalBoolean默认为true。表示是否触发全局Ajax事件设置为false将不会触发。AjaxStart或AjaxStop可用于控制各种Ajax事件第九节 插件 什么是插件 插件(Plugin)也称为jQuery的扩展。以jQuery核心代码为基础编写的符合一定规范的应用程序。通过js文件的方式引用。 插件分为哪几类 UI类、表单及验证类、输入类、特效类、Ajax类、滑动类、图形图像类、导航类、综合工具类、动画类等等引入插件的步骤 引入jquery.js文件而且在所以插件之前引入引入插件引入插件相关文件比如皮肤、中文包 如何自定义插件 插件形式分为3类 封装对象方法插件封装全局函数插件选择器插件(类似于.find()) 自定义插件的规范解决各种插件的冲突和错误增加成功率 命名jquery.插件名.js所有的新方法附加在jquery.fn对象上面所有新功能附加在jquery上所有的方法或插件必须用分号结尾避免出问题插件必须返回jQuery对象便于链式连缀避免插件内部使用$如果要使用请传递jQuery($并不是总等于jQuery另外其他js框架也可能使用$)插件中的this应该指向jQuery对象使用this.each()迭代元素 自定义插件案例 为了方便用户创建插件jQuery提供了 jQuery.extend() 和 jQuery.fn.extend()jQuery.extend()创建工具函数或者是选择器jQuery.fn.extend()创建jQuery对象命令 fn相当于prototype的别名 jQuery官方提供的插件开发模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ;(function($){ $.fn.pluginfunction(options){ var defaults { //各种参数 各种属性 } var options $.extend(defaults,options); this.each(function(){ //实现功能的代码 }); return this; } })(jQuery); 自定义jQuery函数 1 2 3 4 5 6 7 (function($){ $.extend({ test: function(){ alert(hello plugin); } }) })(jQuery); 自定义jQuery命令 形式1 1 2 3 4 5 6 7 (function($){ $.fn.extend({ say : function(){ alert(hello plugin); } }) })(jQuery); 形式2 1 2 3 4 5 6 (function($){ $.fn.say function(){ alert(hello plugin); }; })(jQuery); 附录一 jQuery各个版本新增的一些常用的方法 jQuery1.3新增常用的方法方法说明.closest()从元素本身开始逐级向上级元素匹配并返回最先匹配的祖先元素die()从元素中删除先前用live()方法绑定的所有的事件live()附加一个事件处理器到符合目前选择器的所有元素匹配jQuery1.4新增常用的方法方法说明.first()获取集合中第一个元素last()获取集合中最后一个元素has(selector)保留包含特定后代的元素去掉那些不含有指定后代的元素detach()从DOM中去掉所有匹配的元素。detach()和remov()一样除了detach()保存了所有jquery数据和被移走的元素相关联。当需要移走一个元素不久又将该元素插入DOM时这种方法很有用delegate()为所有选择器匹配的元素附加一个处理一个或多个事件undelegate()为所有选择器匹配的元素删除一个处理一个或多个事件jQuery1.6新增常用的方法方法说明prop(proptyName)获取在匹配元素集合中的第一个元素的属性值removeProp(proptyName,value)为匹配的元素删除设置的属性:focus选择当前获取焦点的元素附录二 jQuery性能优化 性能优化 使用最新版的jQuery类库使用合适的选择器 $(#id) 使用id来定位DOM元素是最佳的方式为了提高性能建议从最近的ID元素开始往下搜索$(p) , $(div) , $(input) 标签选择器性能也不错它是性能优化的第二选择。因为jQuery将直接调用本地方法document.getElementsByTagName()来定位DOM元素$(.class) 建议有选择性的使用$([attributevalue]) 对这个利用属性定位DOM元素本地JavaScript并没有直接实现。这种方式性能并不是很理想。建议避免使用。$(:hidden) 和上面利用属性定位DOM方式类似建议尽量不要使用注意的地方 尽量使用ID选择器尽量给选择器指定上下文缓存对象 如果你需要在其他函数中使用jQuery对象你可以把他们缓存在全局环境中数组方式使用jQuery对象 使用jQuery选择器获取的结果是一个jQuery对象。在性能方面建议使用for或while循环来处理而不是$.each()事件代理 每一个JavaScript事件如click、mouseover都会冒泡到父级节点。当我们需要给多个元素调用同个函数时这点很有用。比如我们要为一个表单绑定这样的行为点击td后把背景颜色设置为红色 $(#myTable td).click(function(){$(this).css(background,red);});假设有100个td元素在使用以上的方式时绑定了100个事件将带来性能影响代替这种多元素的事件监听方法是你只需向他们的父节点绑定一次事件然后通过event.target获取到点击的当前元素 $(#myTable td).click(function({$(e.target).css(background,red)});e.target捕捉到触发的目标在jQuery1.7中提供了一个新的方法on()来帮助你将整个事件监听封装到一个便利的方法中 $(#myTable td).on(click,td,function(){$(this).css(background,red);});将你的代码转化成jQuery插件 它能够使你的代码有更好的重用性并且能够有效的帮助你组织代码 使用join()方法来拼接字符串 也许你之前使用来拼接字符串现在可以改了。它确实有助于性能优化尤其是长字符串处理的时候 合理使用HTML5和Data属性 HTML5的data属性可以帮助我们插入数据特别是后端的数据交换。jQuery的Data()方法有效利用HTML5的属性 例如div iddl data-rolepage data-list-value43 data-options{name:John}为了读取数据你需要使用如下代码 $(#dl).data(role;//page)$(#dl).data(lastValue;//43)$(#dl).data(options;//john) 尽量使用原生的JavaScript方法 压缩JavaScript代码 一方面使用Gzip另一方面去除JavaScript文件里面的注释、空白附录三 常用的jQuery代码片段 禁用页面的右键菜单 1 2 3 4 5 $(document).ready(functuion(){ $(document).bind(contextmenu,function(e){ return false; }); }); 新窗口打开页面 1 2 3 4 5 6 7 8 9 10 11 $(document).ready(function(){ //例子1hrefhttp://的链接将会在新窗口打开链接 $(a[href^http://]).attr(target,_blank); //例子2relexternal的超链接将会在新窗口打开链接 $(a[rel$external]).click(function(){ this.target _blank; }); }); //use a hrefhttp://baidu.com relexternalopen/a 判断浏览器类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 $(document).reday(function(){ //Firefox2 and above if( $.browser.mozilla $.browser.version1.8){ //do something } // Safari if($.browser.safari){ //do something } // Chrome if($.browser.chrome){ //do something } // Opera if($.browser.opera){ //do something } }) // IE6 and blow if($.browser.msie $.browser.version6){ //do something } // anything above IE6 if($.browser.msie $.browser.version 6){ //do something } 输入框文字获取和失去焦点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $(document).ready(function(){ $(input.text1).val(Enter you search text here); textFill($(input.text1)); }); function textFill(input){//input focus text function var originvalue input.val(); input.focus(funtion(){ if($.trim(input.val()) originvalue){ input.val( ); } }).blur(function(){ if($.trim(input.val()) ){ input.val(originalvalue); } }) } 获取鼠标位置 1 2 3 4 5 6 $(document).ready(function(){ $(document).mousemove(function(e){ $(#XY).html(X: e.pageX | Y e.pageY); }); }); 判断元素是否存在 1 2 3 4 5 $(document).ready(function(){ if($(#id).length){ // do some thing } }) 点击div也可以跳转 1 2 3 4 5 6 7 $(div).click(function(){ window.location $(this).find(a).attr(href); }) //use diva hrefindex.htmlhome/a/div 设置div在屏幕中央 1 2 3 4 5 6 7 8 9 10 11 $(document).ready(function(){ jQuery.fn.center function(){ this.css(position,absolute); this.css(top,($(window).height() - this.lenght()) / 2 $(window).scrollTop() px); this.css(left,($(window).height() - this.lenght()) / 2 $(window).scrollLeft() px); return this; } //use $(#XY).center(); }); 关闭所有动画效果 1 2 3 $(document).ready(function(){ jQuery.fx.off true; }); 检测鼠标的右键和左键 1 2 3 4 5 $(document).ready(function(){ $(#xy).mousedown(function(e){ alert(e.which);//1 鼠标左键 2 鼠标中间 3 鼠标右键 }); }); 回车提交表单 1 2 3 4 5 6 7 $(document).ready(function(){ $(input).keyup(function(e){ if(e.which 13){ alert(回车提交); } }) }); 设置全局的Ajax参数 1 2 3 4 5 6 7 8 $(#load).ajaxStart(function(){ showLoading();//显示loading disableButtons() //禁用按钮 }) $(#load).ajaxComplete(function(){ hideLoading();//隐藏loading enableButtons();//启用按钮 }) 获取选中的下拉框 1 2 $(#someElement).find(option:selected); $(#someElement option:selected); 切换复选框 1 2 3 4 5 var tog false; $(button).click(function(){ $(input[typecheckbox]).attr(checked,!tog); tog !tog; }); 个性化链接 1 2 3 4 5 $(document).ready(function(){ $(a[href$pdf]).addClass(pdf); $(a[href$zip]).addClass(zip); $(a[href$psd]).addClass(psd); }); 在一段时间后自动隐藏或关闭元素 1 2 3 4 5 6 setTimeOut(function(){ $(div).fadeIn(400); },3000); //而在1.4之后的版本可以用delay()来实现 $(div).slideUp(300).delay(3000).fadeIn(400); 使用事件代理绑定元素 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //为table里面的td元素绑定click事件不管td是一直存在还是动态创建的 //jQuery 1.4.2之前使用这种方式 $(table).each(function(){ $(td,this).live(click,function(){ $(this).toggleClass(hover); }); }); //jquery 1.4.2使用的方式 $(table).delegate(td,click,function(){ $(this).toggleClass(hover); }); //jQuery1.7.1使用的方式 $(table).on(click,td,function(){ $(this).toggleClass(hover); }) 预加载图片 1 2 3 4 5 6 7 8 9 10 11 12 (function($) { var cache []; // Arguments are image paths relative to the current page. $.preLoadImages function() { var args_len arguments.length; for (var i args_len; i--;) { var cacheImage document.createElement(img); cacheImage.src arguments[i]; cache.push(cacheImage); } } jQuery.preLoadImages(image1.gif, /path/to/image2.png); 让页面中的每个元素都适合在移动设备上展示 1 2 3 4 5 6 7 8 9 10 11 var scr document.createElement(script); scr.setAttribute(src, https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js); document.body.appendChild(scr); scr.onload function(){ $(div).attr(class, ).attr(id, ).css({ margin : 0, padding : 0, width: 100%, clear:both }); }; 图像等比例缩放 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 $(window).bind(load, function() { // IMAGE RESIZE $(#product_cat_list img).each(function() { var maxWidth 120; var maxHeight 120; var ratio 0; var width $(this).width(); var height $(this).height(); if(width maxWidth){ ratio maxWidth / width; $(this).css(width, maxWidth); $(this).css(height, height * ratio); height height * ratio; } var width $(this).width(); var height $(this).height(); if(height maxHeight){ ratio maxHeight / height; $(this).css(height, maxHeight); $(this).css(width, width * ratio); width width * ratio; } }); //$(#contentpage img).show(); // IMAGE RESIZE }); 返回页面顶部 1 2 3 4 5 6 7 8 // Back To Top $(document).ready(function(){ $(.top).click(function() { $(document).scrollTo(0,500); }); }); //Create a link defined with the class .top a href# classtopBack To Top/a 使用jQuery打造手风琴式的折叠效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var accordion { init: function(){ var $container $(#accordion); $container.find(li:not(:first) .details).hide(); $container.find(li:first).addClass(active); $container.on(click,li a,function(e){ e.preventDefault(); var $this $(this).parents(li); if($this.hasClass(active)){ if($(.details).is(:visible)) { $this.find(.details).slideUp(); } else { $this.find(.details).slideDown(); } } else { $container.find(li.active .details).slideUp(); $container.find(li).removeClass(active); $this.addClass(active); $this.find(.details).slideDown(); } }); } }; 使用jQuery和Ajax自动填充选择框 1 2 3 4 5 6 7 8 9 10 11 12 13 $(function(){ $(select#ctlJob).change(function(){ $.getJSON(/select.php,{id: $(this).val(), ajax: true}, function(j){ var options ; for (var i 0; i j.length; i) { options j[i].optionDisplay ; } $(select#ctlPerson).html(options); }) }) }) 自动替换丢失的图片 1 2 3 4 5 6 7 8 // Safe Snippet $(img).error(function () { $(this).unbind(error).attr(src, missing_image.gif); }); // Persistent Snipper $(img).error(function () { $(this).attr(src, missing_image.gif); }); 预防对表单进行多次提交 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $(document).ready(function() { $(form).submit(function() { if(typeof jQuery.data(this, disabledOnSubmit) undefined) { jQuery.data(this, disabledOnSubmit, { submited: true }); $(input[typesubmit], input[typebutton], this).each(function() { $(this).attr(disabled, disabled); }); return true; } else { return false; } }); }); 动态添加表单元素 1 2 3 4 5 //change event on password1 field to prompt new input $(#password1).change(function() { //dynamically create new input and insert after password1 $(#password1).append(); }); 在窗口滚动时自动加载内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var loading false; $(window).scroll(function(){ if((($(window).scrollTop()$(window).height())250)$(document).height()){ if(loading false){ loading true; $(#loadingbar).css(display,block); $.get(load.php?start$(#loaded_max).val(), function(loaded){ $(body).append(loaded); $(#loaded_max).val(parseInt($(#loaded_max).val())50); $(#loadingbar).css(display,none); loading false; }); } } }); $(document).ready(function() { $(#loaded_max).val(50); }); 导航菜单背景切换效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ul idnav li导航一/li li导航二/li li导航三/li /ul //注意代码需要修饰完善 $(#nav).click(function(e) { // 要知道siblings的使用 $(e.target).addClass(tclass).siblings(.tclass).removeClass(tclass);; }); 解决jQuery, prototype共存$全局变量冲突问题 1 2 3 4 5 script srcprototype.js/script script srchttp://blogbeta.blueidea.com/jquery.js/script script typetext/javascript jQuery.noConflict();/script 注意一定要先引入prototype.js 再引入jquery.js先后顺序不可错 jQuery 判断元素上是否绑定了事件 1 2 3 4 5 //jQuery event封装支持判断元素上是否绑定了事件此方法只适用于jQuery绑定的事件 var $events $(#foo).data(events); if( $events $events[click] ){ //your code } 如何正确地使用toggleClass 1 2 3 4 5 //切换toggle类允许你根据某个类的//是否存在来添加或是删除该类。 //这种情况下有些开发者使用 a.hasClass(blueButton) ? a.removeClass(blueButton) : a.addClass(blueButton); //toggleClass允许你使用下面的语句来很容易地做到这一点 a.toggleClass(blueButton); 如何设置IE特有的功能 1 2 3 if ($.browser.msie) { // Internet Explorer就是个虐待狂 } 如何验证某个元素是否为空 1 2 3 4 5 6 7 8 // 方法一 if (! $(#keks).html()) { //什么都没有找到; } // 方法二 if ($(#keks).is(:empty)) { //什么都没有找到; } 访问IFrame里的元素 1 2 3 var iFrameDOM $(iframe#someID).contents(); //然后就可以通过find方法来遍历获取iFrame中的元素了 iFrameDOM.find(.message).slideUp(); 管理搜索框的值 现在各大网站都有搜索框而搜索框通常都有默认值当输入框获取焦点时默认值消失。而一旦输入框失去焦点而输入框里又没有输入新的值输入框里的值又会恢复成默认值如果往输入框里输入了新值则输入框的值为新输入的值。这种特效用JQuery很容易实现 1 2 3 4 5 6 7 $(#searchbox) .focus(function(){ $(this).val() }) .blur(function(){ var $this $(this); // 请搜索...为搜索框默认值 ($this.val() )? $this.val(请搜索...) : null; }); 部分页面加载更新 为了提高web性能有更新时我们通常不会加载整个页面而只是仅仅更新部分页面内容如图片的延迟加载等。页面部分刷新的特效在JQuery中也很容易实现 1 2 3 4 setInterval(function() { //每隔5秒钟刷新页面内容 //获取的内容将增加到 id为content的元素后 $(#content).load(url); }, 5000); 采配置JQuery与其它库的兼容性 如果在项目中使用JQuery$ 是最常用的变量名但JQuery并不是唯一一个使用$作为变量名的库为了避免命名冲突你可以按照下面方式来组织你的代码 1 2 3 4 5 6 7 8 //方法一 为JQuery重新命名为 $jvar $j jQuery.noConflict();$j(#id).... // 方法二 推荐使用的方式 (function($){ $(document).ready(function(){ //这儿你可以正常的使用JQuery语法 }); })(jQuery); 测试密码的强度 在某些网站注册时常常会要求设置密码网站也会根据输入密码的字符特点给出相应的提示如密码过短、强度差、强度中等、强度强等。这又是怎么实现的呢看下面代码 1 input typepassword namepass idpass / span idpassstrength/span 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //下面的正则表达式建议各位收藏哦项目上有可能会用得着 $(#pass).keyup(function(e) { //密码为八位及以上并且字母数字特殊字符三项都包括 var strongRegex new RegExp(^(?.{8,})(?.*[A-Z])(?.*[a-z])(?.*[0-9])(?.*\\W).*$, g); //密码为七位及以上并且字母、数字、特殊字符三项中有两项强度是中等 var mediumRegex new RegExp(^(?.{7,})(((?.*[A-Z])(?.*[a-z]))|((?.*[A-Z])(?.*[0-9]))|((?.*[a-z])(?.*[0-9]))).*$, g); var enoughRegex new RegExp((?.{6,}).*, g); if (false enoughRegex.test($(this).val())) { $(#passstrength).html(More Characters); } else if (strongRegex.test($(this).val())) { $(#passstrength).className ok; $(#passstrength).html(Strong!); } else if (mediumRegex.test($(this).val())) { $(#passstrength).className alert; $(#passstrength).html(Medium!); } else { $(#passstrength).className error; $(#passstrength).html(Weak!); } return true; }); 附录四 常见CND加速服务 Bootstrap中文网开源项目免费 CDN 服务百度静态资源公共库360网站卫士常用前端公共库CDN服务–已停止服务开放静态文件 CDN微软CDN服务阿里云百度开放云平台jQuery CDNjQuery cdn加速新浪CDN附录五 jQuery的一些资源 速查手册 jQuery API 中文文档–css88jQuery-overapi在线桌面版API更多详情—一份实用的API参考手册集合jQuery插件 基础常用 滚动固定在某个位置jQuery图片滚动插件全能版jQuery Wookmark Load 瀑布流布局jQuery Jcrop 图像裁剪jQuery kxbdMarquee 无缝滚动jQuery lightBox 灯箱效果Lazy Load Plugin for jQuery更多插件-动效库整理 插件动效库常用组件扩展阅读 jQuery源码分析系列参考 锋利的jQuery本文md源文件转载于:https://www.cnblogs.com/ys-wuhan/p/6195310.html
http://www.huolong8.cn/news/411292/

相关文章:

  • html社交网站模板我想做app推广代理
  • 网站 提交入口百度网盘优化
  • 山东省和城乡建设厅网站首页培训班学编程
  • 理财网网站开发源码h5财务管理软件
  • 中英文外贸网站模板网站模板的修改
  • 德清县新巿镇城市建设网站wordpress防止被镜像
  • 教做湘菜的视频网站网站建立不安全怎么取消
  • 中山精品网站建设行情网络seo哈尔滨
  • 自己做网站,为什么出现403交换友链要注意什么
  • 我想帮别人做网站有这样的平台吗100种晚上禁用的app大全
  • 做公司网站备案可以个人现在外贸推广做哪个平台
  • 石家庄建站优化公司wordpress 修改时间
  • 作品集公司网站古风网站建设模板下载
  • 建设银行官方网站链接怎样利用云盘做电影网站
  • 凡科网站代理登录入口做国外零售的话是在什么网站开店
  • 安监网站安全建设信息ps教程app
  • 福州做网站互联网公司wordpress-5.2.1
  • 台州网站排名公司自己在家可以做网站吗
  • 什么网站专门做软件的网站建设包含seo吗
  • 新网站怎么做谷歌推广呢免费asp网站空间
  • 做网站赚钱吗 怎么赚网站开发和商城的科目
  • iis如何发布asp.net网站百度链接提交
  • 网站建设 标准网站建设销售ppt模板
  • 深圳集团网站开发网站开发公司电话销售平台建设方案
  • 中明建投建设集团 网站网站后台权限分配说明
  • php做网站访问记录湖北建站公司
  • 免费个人网站如何帮人做网站赚钱
  • 学校网站的功能合肥做网站需要多少钱
  • 葫芦岛市住房和城乡建设局网站sem优化系统
  • 眼镜网站源码南宁网页制作过程