- 浏览: 50602 次
-
文章分类
最新评论
JQuery:
一:入门
二:选择器
三:DOM操作
四:事件、动画
五:表单、表格的操作
六:JQuery与AJax
------------------------------------------------------------------------------
一:入门
回顾javaScript,JavaScript是有NetScape公司开发的一种脚本语言,JavaScript的出现使得网页和用户之间实现了一种实时的、动态的和交互的关系,使网页包含跟多活跃的元素和更加精彩的内容。但是JavaScript自身也存在弊端,即复杂的文档对象模型,不一致的浏览器实现及缺乏便捷的开发和调试工具。
为了简化JavaScript开发,一些JavaScript库诞生了。JavaScript库封装了很多预定义的对象和函数,能帮助开发者轻松建立有高难度交互的web2.0特性的富客户端页面,并且兼容各大浏览器。
JQuery库:JQuery是一套跨浏览器的JavaScript库,简化了HTML和JavaScript之间的操作。John Resign在2006年1月的BarGamp NYC上发布第一个版本。目前是由Dave Methvin领导的开发团队进行来发。全球前10000个访问量最高的网站中,有59%使用了JQuery,是目前最受欢迎的JavaScript库。
宗旨:write less,do more
JQuery特性:
1:轻量级
JQuery非常轻巧,采用uglifyJS工具压缩,大小不到30KB,如果使用Min版,只有18KB
2:强大的选择器 JQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及JQuery独创的高级而复杂的选择器。另外还可以加入插件使其支持XPath选择器,甚至开发者可以编写自己的选择器。
3:出色的DOM操作的封装 JQuery封装了大量常用的DOM操作,使开发者在编写DOM操作相关程序的时候能够得心应手。而且轻松的完成了各种原本非常复杂的操作,让JavaScript新手也能写出非常出色的程序。
<input id="a"..>
document.getElementById("id").add..();
$("#a")
4:可靠的事件处理机制
JQuery事件处理机制吸收了JavaScript专家Dean Edwards编写的事件处理函数的精华,使得JQuery在处理事件绑定的时候相当可靠。
onclick
$("#a").click()
.keyup()
5:完善的AJAX JQuery将所有AJAX的操作封装到一个函数$.ajax(),使得开发者在处理AJAX的时候能够专心处理业务逻辑而无需关心复杂的浏览器兼容性问题和XMLHttpRequest对象的创建和使用的问题。
6:不污染顶级变量 JQuery只建立一个名为JQuery的对象,其所有的函数方法都在这个对象之下,其别名$也可以随时交出控制权,绝对不会污染其他对象。这一特性使JQuery可以和其他JavaScript库共存,在项目中引用而不需要考虑后期可能的冲突。
$==jquery
j
7:出色的浏览器兼容性
JQuery能够在IE6.0+、FF 2.0+、Safari 2.0+和Opera9.0+下正常运行。同时还修复了一些浏览器之间的差异,使开发者不必再开展项目前建立浏览器兼容库。
8:链式操作方式
对发生在同一jQuery对象的一组操作,可以直接连写而无需重复获取对象
$("#a").click({}).css
.keyup()
9:隐式迭代
当用jQuery找到“.myClass”类的全部元素,然后隐藏它们时,无需循环遍历每一个 返回的元素。相反,jQuery里的方法都被设计成操作对象集合,而不是当独的对象,
这使得大量循环结构变得不再必要,减少代码量。
10:行为层与结构层分离 开发者可以用jQuery选择器选中元素,直接给元素添加事件,这种行为层和结构层分离的思想,可以使jQuery开发人员和HTML或其他页面开发人员各司其职,避免开发冲突。使后期维护也非常方便。
11:丰富的插件支持
12:完善的文档
13:开源
JQuery环境配置 jQuery不需要安装,把下载好jquery-1.11.1.js放到公共的位置,想要在某个页面使用时,只需要在相关的HTML文档中引入该库文件的位置即可。
明确:在jQuery库中,$<==>jquery,例如$("#foo")<==>jquery("#foo"),
$.ajax<==>jquery.ajax,$是jQuery的一个简写形式
如下引入:
<html>
<head>
<title>firstJquery</title>
<!--在head标签内引入jQuery -->
<script src="../jquery-1.11.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
alert("hello JQuery!,this is my first JQuery programing");
});
</script>
</head>
<body>
</body>
</html>
代码分析:
//等待DOM元素加载完毕
①$(document).ready(function(){
//...
});
代码①类似传统JavaScript中的window.onload(),但是它们之间存在区别
执行时机:
window.onload():必须等到网页中所有元素加载完毕才执行
①:网页中所有DOM元素绘制完就执行,可能DOM元素关联的东西并没有加载完
编写个数:
window.onload():不能同时编写多个
window.onload()=function(){alert("test1")};
window.onload()=function(){alert("test2")};
最终,输出test2
①:可以编写多个
简写形式:
window.onload():无
$()
①:①可简写为$(function(){
//...
});
语法:jQuery的语法是为HTML元素编制的,可以对元素执行某些操作
$(selector).action()
$:表示jquery对象
selector:表示查询和查找HTML元素
action:表示对元素执行的操作
<html>
<head>
<title>Jquery</title>
<!--在head标签内引入jQuery -->
<script src="../jquery-1.11.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<button type="button">click_me</button>
</body>
</html>
DOM对象和JQuery对象
DOM对象:DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成一颗树。我们可以通过JavaScript中的document.getElementById或者document.getElementsByTagName来获取元素节点。像这样获取到的DOM元素就是DOM对象。DOM对象可以使用JavaScript中的方法。
例:var obj = document.getElementById("id");
var objHTML = obj.innerHTML;
JQuery对象:通过jQuery包装DOM对象后产生的对象就是JQuery对象。jQuery对象是jQuery独有的,如果一个对象时jQuery对象,那么就可使用jQuery中的方法。
例:$("#foo").html();//获取id为foo的元素内的html代码,html()是jQuery的方法
在jQuery对象中无法使用DOM对象的任何方法,同样在DOM对象中也无法使用jQuery中的任何方法。
jQuery对象转换成DOM对象:
jQuery对象不能使用DOM中的方法,但如果对jQuery锁提供的方法不熟悉,火车jQuery没有封装想要的方法,不得不使用DOM中的方法,有两种处理方法。[index]或get(index)
1:jquery对象是一个数组对象,可以通过[index]的方法得到相应的DOM对象
jQuery代码:
var $cr = $("#cr");//jquery 对象
var cr = $cr[0];//DOM 对象
alert(cr.checked);
2:jquery本身提供的,通过get(index)方法得到相应的DOM对象
var $cr = $("#cr");//jquery 对象
var cr = $cr.get(0);//DOM 对象
alert(cr.checked);
DOM对象转换成JQuery对象
1:$()将DOM对象包装起来,就可以获得一个jQuery对象,即$(DOM对象)
var cr = document.getElementById("cr");
var $cr = $(cr);
二:选择器
首先,回顾CSS中选择器,CSS是一项出色的技术,它将网页结构和表现形式完全分离,利用CSS选择器能轻松的对某个元素添加样式而不改变HTML的样式,只需要添加不同的CSS规则,就可以得到各种不同样式的网页。要使某个样式应运与特定的html元素,首先要找到该元素。在CSS中执行这一任务的表现规则称为CSS选择器。
CSS选择器分类:
标签选择器:E{ 以文档元素作为选择符 td{ width:120px;
CSS规则 font-size:14px;
} }
ID选择器: #ID{ 以文档的唯一标示符ID #note{width:120px;
css规则 作为选择器 font-size:14px;
} }
类选择器: E.className{ 以文档元素的class作 div.note{width:120px;
css规则 为选择符 font-size:14px;
} }
群组选择器:E1,E2,E3{ 多个选择符应运同样的 td,p,div.a{
css规则 样式规则 font-size:14px;
} }
后代选择器:E F{ 元素E的任意后代元素 #links a{width
css规则 color:red;
} }
通配符选择器:*{ 以文档所有元素作 *{
css规则 为选择符 font-size:14px;
} }
<p style="color:red;font-size:14px">CSS demo</p>
.demo{
color:red;
font-size:14px;
}
<p class="demo">CSS demo</p>
JQuery选择器:
jQuery中的选择器完全继承了CSS的风格。利用jQuery选择器,可以非常便捷和快速的找到特定的DOM元素,给它们添加相应的行为,而无需担心浏览器是否支持这一选择器。学会使用选择器是学习jQuery的基础,jQuery的行为必须在获取到元素后才能生效。
<script type="text/javascript">
function demo(){
alert("javascript demo");
}
</script>
<p onclick="demo()">click_me</p>
<script type="text/javascript">
$(document).ready(function(){
$(".demo").click(function(){
alert("javascript demo");
});
});
</script>
<p class="demo">click_me</p>
CSS选择器找到元素后添加样式
jQuery选择器找到元素后添加行为
jQuery选择器分类:
1:基本选择器:最常用的、最简单的、通过id,class和标签名等来查找DOM元素
用法及描述:
#id 根据给定的id匹配一个元素 单个 $("#test")
.class 根据给定的类名匹配 集合 $(".test")
element 根据给定元素名匹配 集合 $("p")
* 匹配所有元素 集合 $("*")
selector1,selector2,... 将每一个选择器匹配到的元素合并后一起返回
集合 $("div,span,p.myClass")
例:example/2/jquery_selector_1.html
2:层次选择器:如果想通过DOM之间的层次关系来获取特定元素,例如后代元素、子元素、相邻元素、同辈元素等,那么我们就选择层次选择器。
用法及描述:
$("ancestor descendant"):
选取ancestor元素里的所有descendant元素,返回集合元素,
$("div span")-->选取div里所有<span>元素
$("parent>child"):
选取parent下的child元素,返回集合元素,
$("div>span")-->选取<div>元素下元素名是<span>的元素
$("prev+next"):
选取紧接在prev元素后的next元素,返回集合元素
$(".one+div")-->选取class为one的下一个div元素
$("prev~siblings"):
选取prev元素之后的所有siblings元素,返回集合元素
$("#two~div")-->选取id为two的元素后面的所有div同辈元素
注意:后代元素与子元素的区别
在层次选择器中第一种和第二种比较常用,第三、第四种有更加简单的方式来代替,
next()方法代替$("prev+next"),nextAll()代替$("prev~siblings")
例:example/jquery_selector_2.html
3:过滤选择器:主要通过特定的过滤规则选出所需要的DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器以冒号(:)开头。按照不同的过滤规则,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤及表单对象属性过滤选择器。
用法及描述:
基本过滤
:first 选取第一个元素
返回单个元素
$("div:first")选取所有div元素中的第一个div元素
:last 选取最后一个元素
返回单个元素
$("div:last")选取所有div元素中的最后一个div元素
:not(selector) 去处所有与指定选择器匹配的元素
集合
$("input:not(.myClass)")去class不是myClass的<input>元素
:even 选取索引是偶数的所有元素
集合
$("input:even")选取索引为偶数的<input>元素
:odd 选取索引是奇数的所有元素
集合
$("input:even")选取索引为奇数的<input>元素
:eq(index) 选取索引等于index的元素(index从0开始)
单个
$("input.eq(1)")选取索引等于1的<input>元素
:gt(index) 选取索引大于index的元素(index从0开始)
集合
$("input.gt(1)")选取索引大于1的<input>元素
:lt(index) 选取索引小于index的元素(index从0开始)
集合
$("input.lt(1)")选取索引小于1的<input>元素
:header 选取所有标题元素,例如h1、h2、h3
集合
$(":header")选取网页中所有标题元素
:animate 选取当前正在执行动画的所有元素
集合
$("div:animate")选取正在执行动画的div元素
:focus 选取当前获取焦点的元素
集合
$(":focus")选取当前获取焦点的元素
内容过滤:
:contains(text) 选取文本内容为test的元素
集合
$("div:contains('我')")
:empty 选取不包含子元素或者文本的空元素
集合
$("div:empty")
:has(selector) 选取含有选择器匹配的元素的元素
集合
$("div:has(p)")
:parent 选取含有子元素或者文本的元素
集合
$("div:parent")
可见性过滤:根据元素的可见和不可见状态来选择相应元素
:hidden 选取所有不可见元素
集合
$(":hidden")包含<input type="hidden"/>,<div style="display:none">,
<div style="visibility:hidden">.
如果只想去<input>元素,$("input:hidden")
:visible 选取所有可见元素
集合
$("div:visible")
属性过滤选择器:通过元素的属性来获取元素
[attribute] 选取拥有此属性的元素 集合 $("div[id]")
[attribute=value] 选取属性值为value的元素 集合 $("div[title=test]")
[attribut!=value] 选取属性值不为value的元素 集合
$("div[title!=test]")注:没有属性title的div也会选中
[attribut^=value] 选取属性值以value开始的元素 集合 $("div[title^=test]")
[attribut$=value] 选取属性值以value结束的元素 集合 $("div[title$=test]")
[attribut*=value] 选取属性值含有value的元素 集合 $("div[title*=test]")
[attribut|=value] 选取属性等于给定value或以value为前缀结束的元素
集合 $('div[title|="en"]')
[attribut~=value] 选取属性用空格分割的值中包含value的元素
集合 $('div[title~="uk"]')
[attribut1][attribut2][attributN]
title="uk test"
用属性选择器合并成一个符合属性选择器,
满足多个条件 集合
$("div[id][title$='test']")
子元素过滤选择器:
:nth-child(even|odd|index) 选取每个父元素下第index或偶数或奇数元素,
index从1开始 集合
eq(index)只返回一个,:nth-child将为每一个父元素匹配
$("nth-child(1)")
$("nth-child(3n)")
$("nth-child(3n+1)")
$("nth-child(even)")
$("nth-child(odd)")
:first-child 获取每个父元素的第一个子元素 集合
:first只返回单个,:first-child将为每一个父元素匹配
$("ul li:first-child")
:last-child
:only-child 如果某个元素是它父元素的唯一子元素,那么匹配
集合
$("ul li:only-child")
例:example/jquery_selector_3.html
表单对象属性过滤器:主要针对所选择的表单元素进行过滤
:enabled 选取所有可用元素 $("#form1 :enabled")
:disabled 选取所有不可用元素 $("#form2 :disabled")
:checked 选取所有被选中元素(单选框、复选框)$("input :checked")
:selected 选取所有被选中元素(下拉列表)$("select option:selected")
例:example/jquery_selector_3_form.html
4:表单选择器
:input 选取所有<input><textarea><select><button>元素
:text 选取所有单行文本框
:password 选取所有密码框
:radio 选取所有单选框
:checkbox 选取所有多选框
:submit 选取所有提交按钮
:image 选取所有图片按钮
:reset 选取所有重置按钮
:button 选取所有按钮
:file 选取所有上传域
:hidden 选取所有不可见元素
例:example/2/jquery_selector_form.html
注意:
1:选择器当中含有特殊字符“#”,“.”,“]”,“)”
根据w3c规定,属性值中不能有特殊字符,但实际项目中偶尔会遇到,处理方式:转义
例:<div id="id#a"></div>
<div id="id[1]"></div>
获取元素方式:
$("#id\\#a")、$("#id\\[1\\]")
三:JQuery中的DOM操作
DOM(Document Object Model,文档对象模型), 是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松的访问到页面中标准组件。
DOM分类:
1:DOM core 任何支持DOM的程序设计语言都可以使用它,它也并不仅仅使用在网页处理,也可以处理任何一种使用标记语言编写出来的文档,例如,XML。
例:
使用DOM Core获取表单对象方法:document.getElementsByTagName("form")
使用DOM Core获取元素src属性:element.getAttribute("src")
2:HTML-DOM
提供一些更加简明的记号来描述各种HTML元素的属性,只能处理web文档
例:
使用HTML-DOM获取表单对象方法:document.forms
使用HTML-DOM获取元素src属性:element.src
3:CSS_DOM
针对CSS的操作,主要作用获取和设置style对象的各种属性。
例:
element.style.color="red";
详细介绍各种DOM操作:
1:查找节点(通过上一章内容)
a)查找元素节点【text();获取文本内容】
var $li = $("ul li.eq(1)");//获取ul中第二个li节点
var li_txt = $li.text();//获取第二个li元素节点的文本内容
alert(li_txt);
b)查找属性节点【element.attr(attrValue);获取元素属性】
var $para = $("p");//获取p节点
var p_txt = $para.attr("title");//获取p元素节点属性title
alert(p_txt);
2:创建节点
a)创建元素节点
$():jquery的工厂函数, 使用:$(html)方法会根据传入的html标记字符串,创建一个DOM对象,并将这个对象包装成一个jQuery对象。
append();追加
例:创建两个li元素,并添加到DOM文档节点上
var $li_1 = $("<li>西瓜</li>");
var $li_2 = $("<li>葡萄</li>");
$("ul").append($li_1);
$("ul").append($li_2);
b)创建文本点
c)创建属性节点
与创建文本节点类似
var $li_1 = $("<li title='watermelons'>西瓜</li>");
var $li_2 = $("<li title='grapes'>葡萄</li>");
$("ul").append($li_1);
$("ul").append($li_2);
3:插入节点
append(); 向每个匹配元素内部追加内容
<==>
appendTo(); 将所有匹配元素追加到指定元素
prepend(); 向每个匹配元素内部前置内容
<==>
prependTo();将所有匹配元素前置到指定元素
after(); 向每个匹配元素后插入内容
<==>
insertAfter();将所有匹配元素插入到指定元素后
before(); 向每个匹配元素之前插入内容
<==>
insertBefore();将所有匹配元素插入到指定元素之前
4:删除节点
remove(); 从DOM元素中删除所有匹配元素,当某个节点被删除后,该节点所包含的后代节点将同时被删除。此方法返回的是一个指向被删除节点的引用,因此可以在以后再使用这些元素。
例:var $li = $("ul li:eq(2)").remove();
$li.appendTo("ul");
同时,remove()方法可以通过传递参数来选择性的删除元素。
例:$("ul li").remove("li[title!=pineapple]");
detach();
跟remove()一样,也是从DOM中删除所有匹配元素,但是detach()不会把匹配元素从jQuery中删除,因而可以在将来再使用这些元素。但是与remove不同的是,所有绑定的事件、附加的数据等都会保存下来。
例:
$("ul li").click(function(){
alert($(this).html());
});
var $li = $("ul li:eq(2)").detach();
$li.appendTo("ul");
empty();
清空节点,同时清空元素中所有后代节点,之后也不可以使用
例:
var $li = $("ul li:eq(2)").empty();
5:复制节点
clone(); 复制节点后,被复制的新元素不具备复制功能,如果需要新元素也具有复制功能,在clone()方法中传递一个参数true。
例:$("ul li").click(function(){
//this.clone().appendTo("ul");
this.clone(true).appendTo("ul");
});
6:替换节点
replaceWith();将所有匹配元素都替换成指定的HTML或DOM元素
replaceAll();与replaceWith()作用一样,只是颠倒了replaceWith()操作
注意:如果替换之前元素绑定的事件,替换后原先绑定的事件与被替换的元素一起消失,需要在新元素上绑定事件。
例:$("p").replaceWith("<strong>你最不喜欢的水果是?</strong>");
$("<strong>你最不喜欢的水果是?</strong>").replaceAll("p");
7:包裹节点
wrap();将匹配元素一一包裹
例:$("p").wrap("<b></b>");
<b><li></b>
<b><li></b>
<b><li></b>
wrapAll();将匹配元素一起包裹
例:$("p").wrapAll("<b></b>");
<b>
<li>
<li>
<li>
</b>
wrapInner();将匹配元素的子内容(包括文本节点)用其他结构化的标记包裹
例:$("p").wrapInner("<b></b>");
8:属性操作
a)获取属性和设置属性
例:var $para = $("p");
var p_txt = $para.attr("title");
设置
$("p").attr("title","myTitle");
$("p").attr("title":"myTitle","name":"test");
b)删除属性
removeAttr();
$("p").removeAttr("title");
9:样式操作
a)获取样式和设置样式
例:html代码
<p class="myClass"title="选择最喜欢水果">你最不喜欢的水果是?</p>
使用attr()获取
var p_class = $("p").attr("class");
设置
$("p").attr("class","high");
b)追加样式
addClass();
例:html代码
<style>
.high{
font-weight:bold;
color:red;
}
.another{
font-style:italic;
color:blue;
}
</style>
c)移除样式
removeClass();
例:$("p").removeClass("high");
同时删除两个class
$("p").removeClass("high").removeClass("another");
或
$("p").removeClass("high another");
或
$("p").removeClass();
d)切换样式
toggleClass();
例:$("p").toggleClass("another");
e)判断是否含有某个样式
hasClass();如果有,返回true,否则返回false
if($("ul li").hasClass("txt_li")){
//删除
}else{
//添加
}
10:设置和获取html、文本和值
a)html()方法
类似JavaScript中的innerHTML属性,可以读取或设置某个元素的html内容
例:alert($("p").html());
$("p").html("<b>你最喜欢的水果是?</b>");
b)text()方法
类似JavaScript中的innerText属性,可以读取或设置某个元素的文本内容
例:alert($("p").text());
$("p").text("你最喜欢的水果是?");
c)val()方法
类似JavaScript中的value属性,可以读取或设置元素值
例:example/dom_login.html
同时,val()还有另一用处,它能使select、checkbox和radio相应的选项被选中
11:遍历节点
a)children();获取匹配元素的子元素的集合
例:var $ul = $("ul").children();
for(int i=0;i<$ul.length;i++){
alert($ul.get(i).innerHTML);
}
b)next();获取匹配元素后面紧邻的同辈元素
例:var $p1 = $("p").next();
c)prev();获取匹配元素前面紧邻的同辈元素
d)siblings();获取元素前后所有同辈元素
e)closest();获取最近的匹配元素。首先从检查当前元素是否匹配,如果匹配就直接返回,如果不匹配则向上查找父元素,逐级向上直到找到匹配元素,如果没有找到,返回空对象
例:$(document).bind("click",function(e){
$(e.target).closest("li").css("color","red");
});
f)parent(),parents(),closest()区别
parent();获取集合中每个匹配元素的父级元素
例:$(".item-1").parent().css("backgroud-color","red");
parent方法直接从指定类型的父节点开始查找,返回一个元素节点
parents();获取集合中每个匹配元素的祖先元素
例:$(".item-1").parents("ul").css("backgroud-color","red");
parents通parent类似,不同的是,当它找见第一个匹配元素时,不会停止,而是继续查找,返回多个父节点
12:CSS-DOM操作
不足:就是无法提取通过外部CSS设置的样式信息
css()
关于元素定位:
offset();获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,只对可见元素有效。
var offset = $("p").offset();
var left = offset.left;
var top = offset.top;
position();获取元素相对于最近的一个position样式属性设置为relative或者
absolute的祖父节点的相对偏移,与offset一样,返回对象包好top和left
var position = $("p").position();
var left = position.left;
var top = position.top;
scrollTop()和scrollLeft();分别是获取元素的滚动条距顶端和左侧的距离
var $p = $("p");
var scrollTop = $p.scrollTop();
var scrollLeft = $p.scrollLeft();
四:事件、动画
javascript和HTML之间的交互是通过用户和浏览器操作页面是引发的事件来处理。
$(document).ready()是用来加载DOM元素,并给加载好的DOM元素注册相应事件的。
使用$(document).ready()时,注意由于在$(document).ready()方法内注册事件,只要DOM就绪就会被执行,因此可能此时元素的关联文件未下载完。解决这个问题,jQuery提供了另外一个关于页面加载的方法--load()方法。load()方法会在元素的onload事件中绑定一个处理函数。
$(document).ready(function(){}):简写$(function(){})
1:事件绑定
bind();为元素绑定事件来完成某些操作。
格式:bind(type [,data],fn);
参数1:事件类型,类型包括:blur,focus,load,resize,scroll,unload,click,
dblclick,mousedown,mouseup,mousemove,mouseover,moudeout,mouseenter,
mouseleave,change,select,submit,keydown,keypress,keyup,error等
参数2:可选,作为event.data属性值传递给事件对象的额外数据对象
参数3:绑定的处理函数
例:bind.html
is();在代码中判断元素是否显示
show();显示元素
hide();隐藏元素
简写:jQuery将常用的方法包装,提供了一套简写的方法
2:合成事件
hover();模拟光标悬停事件
语法:hover(enter,leave);
当光标移动到元素时,会触发一个指定的第一个函数,移除时,会触发第二个函数
修改 例:bind.html
注意:hover()方法准确的来说是替代jQuery中的bind("mouseenter")和bind("mouseleave")
toggle();模拟鼠标连续单击事件,同时可以切换元素的可见状态
语法:toggle(fn1,fn2,...,fnN);
修改 例:bind.html
3:事件冒泡
当页面中多个元素绑定了相同的事件时,当触发其中一个事件时,事件会按照DOM的层次结构像水泡一样不断向上
例:bubble.html
冒泡事件引发的问题:
a)事件对象:
在程序中使用事件对象只需要为函数传递一个参数。
$("element").bind("click",function(event){
//
});
event:事件对象,当单击element元素时,事件对象就被创建了,这个事件对象只有事件处理函数才能访问。
b)停止事件冒泡:
stopPropagation();停止冒泡事件
修改 例:bubble.html
c)阻止默认行为
preventDefault();阻止默认行为,在网页中元素有自己的默认行为,例如单击超链接跳转、单击提交会表单提交
例:preventDefault.html
4:事件对象的属性
jQuery对事件对象的常用属性进行封装。
a)event.type:获取事件对象的类型
b)event.preventDefault():阻止默认行为
c)event.stopPropagation():停止冒泡
d)event.target:获取触发事件的元素
e)event.relatedTarget:获取触发事件的元素
f)event.pageY和event.PageX:获取光标相对于页面的x坐标和y坐标
g)event.which:在鼠标单击事件中获取到鼠标的左、中、右键;在键盘事件中获取键盘的按键
$("a").mousedown(function(e){
alert(e.which);//1:左;2:中;3:右
})
$("input").keyup(function(e){
alert(e.which);
})
h)event.metaKey键盘事件中获取<crtl>键
5:移除事件
a)移按钮元素除以前注册的事件
unbind([type],[data])
参数1:事件类型
参数2:移除的函数
b)移除按钮元素其中一个事件
绑定时,必须给函数指定一个变量名,用unbind()解绑
$(function(){
$("button").bind("click",fn1=function(){
//...
}).bind("click",fn2=function(){
//...
});
$("button").unbind("click",fn1);s
})
one();绑定的事件只触发一次,之后立刻解绑,用法与bind()相同
6:模拟操作
用户不用自己操作,模拟用户操作触发事件
trigger();
$("#btn").trigger("click");//页面装载完毕后,触发所有#btn绑定的click事件,并显示事件效果
触发自定义事件
$("#btn").bind("myClick",function(){
//... ...
})
$("#btn").trigger("myClick");
传递参数
trigger(type,[,data]);
参数1:触发事件的类型,
参数2:传递给事件处理函数的附加数据,以数组的形式传递
$("#btn").bind("myClick", function(event, message1, message2){
$("#test").append( "<p>"+message1 + message2 +"</p>");
});
//传递给事件处理函数的附加数据,以数组形式传递
$('#btn').trigger("myClick",["我的自定义","事件"]);
执行默认操作
trigger()触发事件后,会执行浏览器默认的操作
如果只想执行绑定的事件,而不想执行浏览器默认的操作,使用triggerHandler()方法
7:动画
a)show()和hide()
参数:speed,middle,slow,
b)fadeIn()和fadeOut()只改变元素的不透明度
例 bind.html
c)slideUp()和slideDown()只改变元素的高度
例 bind.html
d)animate(params,speed,callback);
参数1:一个包含样式属性及值的映射
参数2:速度
参数3:动画完成时执行的函数
e)动画回调函数
8:停止动画、判断是否处于动画状态
a)停止动画:
stop([clearQueue],[gotoEnd]);
clearQueue:是否清空未执行完的动画队列,
gotoEnd:是否直接将正在执行的动画跳到末状态
直接使用stop()方法,结束当前正在执行的动画,并立即执行队列中的下一个动画
b)判断元素是否处于动画状态
if(!$(element).is(":animate")){
//添加新动画
}
c)延迟动画
delay();
$(this).animate({left:"400px",height:"200px",opacity:"1"},3000).delay(1000)
.animate({top:"200px",width:"200px"},3000).delay(2000)
.fadeOut("slow");
9:其他动画方法
toggle(speed,[callback])
slideToggle(speed,[callback]):通过高度变化来切换匹配元素的可见性
fadeTo(speed,opacity,[callback]):把元素的不透明度以渐进的方式调整到指定值。
五:对表单、表格的操作
表单和表格都是html的重要组成部分,分别用于采集、提交用户输入的信息和显示列表。
表单应用:
表单组成:
表单标签:包含处理表单数据所用的服务器端程序URL及表单提交到服务器的方法
表单域:包含文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框及文件上传框。
表单按钮:包含提交按钮、复位按钮和一般按钮,用于将数据传送到服务器上或者取消传送,还可以用来控制其他定义了处理脚本的处理工作。
单行文本框应用:
例:example/5/form_test1.html
多行文本框:
高度变化、滚动条高度变化:
例:example/5/form_test2.html
复选框应用:主要是针对复选框的全选、反选和全部选等操作
jquery的1.6之后的版本中attr()用prop()代替
例:example/5/form_test3.html
下拉列表的应用:后台添加新闻管理员登陆时选择所负责的模块
例:example/5/form_test4.html
表单验证:
例:example/5/form_test5.html
表格应用:
普通隔行变色、单选框控制表格行高亮、复选框控制表格高亮、表格内容筛选
例:example/5/table_test1.html
表格展开关闭
例:example/5/table_test2.html
其他应用:
六:JQuery与AJax应用
Ajax:(Asynchronous javaScript and XML),它不是一个单一的技术,而是有机的利用了一系列交互式网络应运相关技术所形成的集合体,它的出现开创了无刷新更新页面的新时代,并替代了传统的web发送和通过隐藏的框架来进行异步提交的趋势,是web开发应运的里程碑。
优势:
不需要插件支持:
优秀的用户体验:
提高web程序的性能:
减轻服务器和带宽的压力:
不足:
浏览器对XMLHttpRequest对象的支持度不足:
破坏浏览器前进和后退的正常功能:
对搜索引擎的支持不足:
开发和调试工具不足:
jQuery中的ajax
jQuery对ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load(),$.get(),$.post()方法,第三层是$.getScript(),$.getJSON()方法。
load()方法:load方法是jQuery中最为简单的常用的ajax方法,能够载入远程html代码并插入DOM中,通常用来从服务器上获取静态的数据文件
1:载入html文档
语法格式:load(url [,data] [,callback])
url(String):请求html页面的URL地址
data(object):可选参数,发送至服务器的key/value数据
callback(function):可选参数,请求完成时的回调函数,无论请求成功还是失败
2:筛选载入的html文档
load方法的URL参数的语法结构:"url selector"
例:load("test.html .para")
3:传递方式
load方法的传递方式是根据参数data自动指定的,如果没有参数传递,则采用get的方式传递,反之,则会自动转换为post方式。
4:回调参数
对于必须在加载完成后才能继续的操作,load方法提供了回调函数,该函数有3个参数,分别代表请求返回的内容、请求状态和XMLHttpRequest对象。
$("#show").load(url,function(responseText,textStatus,XMLHttpRequest){
//responseText请求返回的内容
//textStatus请求状态
//XMLHttpRequest:XMLHttpRequest对象
});
$.get()方法
get提交方式
语法格式:$.get(url [,data] [,callback] [,type])
url:请求html页面的URL地址
data(object):可选参数,发送至服务器的key/value数据会作为QueryString附加到请求的URL中
callback:载入成功时回调函数自动将请求结果和状态传递给该方法
type:服务器返回内容的格式,XML、html、script、json、text
数据格式
HTML:
XML:返回数据格式为XML文档的过程实现起来比html片段要稍微复杂,但是XML文档的可移植性是其他数据格式无法比拟的,因此这种格式提供的数据的重用性将极大提高。
JSON:之所以有JSON这样的数据格式文件,很大程度上是因为XML文档体积大而且难以解析。JSON文件和XML文件一样,也可以方便的被重用,而且JSON文件非常简洁,易懂。
$.post()方法
与$.get()方法的结构和使用方式都相同,但是他们之间也有区别
另外,当load方法带有参数传递时,会使用post方式发送请求,因此也可以使用load方法来完成同样的功能。
GET与POST区别:
$.getScript()
有时候,在页面初次加载的时就取得所需要的廍Javascript文件时完全没有必要的。虽然也可以在需要某个js文件时动态的创建<script>标签,
$(document.createElement("script")).attr("src","test.js").appendTo("head");
或
$("<script type='text/javascript' src='test.js'").appendTo("head");
但是比较麻烦,可以使用$.getScript()方便的获取js文件
$(function(){
$("#send").click(function(){
$.getScript("test.js");
})
})
$.getJSON()
用来加载json文件,用法与$.getScript()一样
$(function(){
$("#send").click(function(){
$.getJSON("test.json");
})
})
当在页面点击加载后,页面没有任何效果,因为没有处理返回的数据,所以jQuery提供了回调函数,处理返回的数据,可以在函数中通过data变量遍历数据,也可以使用迭代的方式为每一项构建html代码($.each()),
$(function(){
$("#send").click(function(){
$.getJSON("test.json",function(data){
$("#show").empty;
var html = "";
$.each(data,function(commentIndex,comment){
html += "<div class='comment'><h6>"+
username+":</h6><p class='para'>"+
content+"</p></div>";
})
$("#show").html(html);
});
})
})
$.each()是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第一个参数,以一个回调函数作为第二个参数,回调函数有拥有两个参数,第一个参数为对象的成员或数组的索引,第二个参数为对应变量或内容。
$.ajax()方法
结构:$.ajax(options)
options:这个参数包含了$.ajax()方法所需要的请求设置及回调函数等信息,参数以key/value形式存在,所有参数都是可选的。
URL:(string):(默认为当前页面地址)发送请求的地址
type:(String):请求方式(POST或GET),默认为GET
timeout:(number):设置请求超时时间。此设置将覆盖$.ajaxSetup()方法的全局设置
data:(object/string):发送到服务器的数据。如果已经不是字符串,将自动转化为字符串格式。GET请求中将附加到URL后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式。例如{foo1:"bar1",foo2:"bar2"}转换为
&foo1=bar1&foo2=bar2。如果是数组,jQuery将自动为不同值对应相同名称。例如:{foo:["bar1","bar2"]}转化为&foo=bar1&foo=bar2
dataType:(string):预期服务器返回的数据类型。如果不指定服务器将自动根据HTTP包MIME信息返回responseXML或者responseText,并作为回调函数的参数传递。可用类型:
XML:返回XML文档,可用jQuery处理
html:返回纯文本的html信息。
script:返回纯文本的javascript代码。
json:返回json数据。
text:返回纯文本
beforeSend:(function):发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义的HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。一个参数
function(XMLHttpRequest){
this;//调用本次ajax请求传递的options参数
}
complete:(function):请求完成后调用的回调函数,两个参数
function(XMLHttpRequest,textStatus){
this;//调用本次ajax请求传递的options参数
}
success:(function):请求成功好调用的回调函数,两个参数
function(data,textStatus){
this;//调用本次ajax请求传递的options参数
}
error:(function):请求失败后执行的回调函数,三个参数,XMLHttpRequest对象、错误信息、捕获的错误对象
function(XMLHttpRequest,textStatus,errorThrow){
this;//调用本次ajax请求传递的options参数
}
global:(boolean):默认为true,表示是否触发求全局ajax事件。false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件
前面说到的方法都是基于$.ajax构建的,因此可以用$.ajax替代
$(function(){
$("#send").click(function(){
$.ajax({
type:"GET",
url:"test.js",
data:script
})
})
})
$(function(){
$("#send").click(function(){
$.ajax({
type:"GET",
url:"ArgsTestServlet?msg="+$("#msg"),
data:json,
success:function(data){
//... ...
}
})
})
})
序列化元素:
serialize():作用于jQuery对象,可将DOM元素内容序列化为字符串,用于ajax请求。
$(function(){
$("#send").click(function(){
$.get("ArgsTestServlet",{
username:$("#username").val(),
content:$("#content").val()
},function(data,textStatus){
$("#show").html(data);
})
})
})
改为:
$(function(){
$("#send").click(function(){
$.get("ArgsTestServlet",$("#myform").serialize()
,function(data,textStatus){
$("#show").html(data);
})
})
})
serializeArray()方法:
该方法将DOM元素序列化后返回json格式的数据。既然是对象,可以使用$.each()对数据进行迭代输出。
$(function(){
var fields = $(":checkbox,:radio").serializeArray();
$.each(fields,function(i,field){
$("#result").append(field.value+",");
})
})
$.param()方法:可以对一个数组或对象按照key/value进行序列化
var obj = {a:1,b:2,c:3}
var k = $.param(obj);
alert(k);//结果为a=1&b=2&c=3
jquery中ajax全局事件
ajaxComplete(callback):
ajaxError(callback)
ajaxSend(callback)
ajaxSuccess(callback)
一:入门
二:选择器
三:DOM操作
四:事件、动画
五:表单、表格的操作
六:JQuery与AJax
------------------------------------------------------------------------------
一:入门
回顾javaScript,JavaScript是有NetScape公司开发的一种脚本语言,JavaScript的出现使得网页和用户之间实现了一种实时的、动态的和交互的关系,使网页包含跟多活跃的元素和更加精彩的内容。但是JavaScript自身也存在弊端,即复杂的文档对象模型,不一致的浏览器实现及缺乏便捷的开发和调试工具。
为了简化JavaScript开发,一些JavaScript库诞生了。JavaScript库封装了很多预定义的对象和函数,能帮助开发者轻松建立有高难度交互的web2.0特性的富客户端页面,并且兼容各大浏览器。
JQuery库:JQuery是一套跨浏览器的JavaScript库,简化了HTML和JavaScript之间的操作。John Resign在2006年1月的BarGamp NYC上发布第一个版本。目前是由Dave Methvin领导的开发团队进行来发。全球前10000个访问量最高的网站中,有59%使用了JQuery,是目前最受欢迎的JavaScript库。
宗旨:write less,do more
JQuery特性:
1:轻量级
JQuery非常轻巧,采用uglifyJS工具压缩,大小不到30KB,如果使用Min版,只有18KB
2:强大的选择器 JQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及JQuery独创的高级而复杂的选择器。另外还可以加入插件使其支持XPath选择器,甚至开发者可以编写自己的选择器。
3:出色的DOM操作的封装 JQuery封装了大量常用的DOM操作,使开发者在编写DOM操作相关程序的时候能够得心应手。而且轻松的完成了各种原本非常复杂的操作,让JavaScript新手也能写出非常出色的程序。
<input id="a"..>
document.getElementById("id").add..();
$("#a")
4:可靠的事件处理机制
JQuery事件处理机制吸收了JavaScript专家Dean Edwards编写的事件处理函数的精华,使得JQuery在处理事件绑定的时候相当可靠。
onclick
$("#a").click()
.keyup()
5:完善的AJAX JQuery将所有AJAX的操作封装到一个函数$.ajax(),使得开发者在处理AJAX的时候能够专心处理业务逻辑而无需关心复杂的浏览器兼容性问题和XMLHttpRequest对象的创建和使用的问题。
6:不污染顶级变量 JQuery只建立一个名为JQuery的对象,其所有的函数方法都在这个对象之下,其别名$也可以随时交出控制权,绝对不会污染其他对象。这一特性使JQuery可以和其他JavaScript库共存,在项目中引用而不需要考虑后期可能的冲突。
$==jquery
j
7:出色的浏览器兼容性
JQuery能够在IE6.0+、FF 2.0+、Safari 2.0+和Opera9.0+下正常运行。同时还修复了一些浏览器之间的差异,使开发者不必再开展项目前建立浏览器兼容库。
8:链式操作方式
对发生在同一jQuery对象的一组操作,可以直接连写而无需重复获取对象
$("#a").click({}).css
.keyup()
9:隐式迭代
当用jQuery找到“.myClass”类的全部元素,然后隐藏它们时,无需循环遍历每一个 返回的元素。相反,jQuery里的方法都被设计成操作对象集合,而不是当独的对象,
这使得大量循环结构变得不再必要,减少代码量。
10:行为层与结构层分离 开发者可以用jQuery选择器选中元素,直接给元素添加事件,这种行为层和结构层分离的思想,可以使jQuery开发人员和HTML或其他页面开发人员各司其职,避免开发冲突。使后期维护也非常方便。
11:丰富的插件支持
12:完善的文档
13:开源
JQuery环境配置 jQuery不需要安装,把下载好jquery-1.11.1.js放到公共的位置,想要在某个页面使用时,只需要在相关的HTML文档中引入该库文件的位置即可。
明确:在jQuery库中,$<==>jquery,例如$("#foo")<==>jquery("#foo"),
$.ajax<==>jquery.ajax,$是jQuery的一个简写形式
如下引入:
<html>
<head>
<title>firstJquery</title>
<!--在head标签内引入jQuery -->
<script src="../jquery-1.11.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
alert("hello JQuery!,this is my first JQuery programing");
});
</script>
</head>
<body>
</body>
</html>
代码分析:
//等待DOM元素加载完毕
①$(document).ready(function(){
//...
});
代码①类似传统JavaScript中的window.onload(),但是它们之间存在区别
执行时机:
window.onload():必须等到网页中所有元素加载完毕才执行
①:网页中所有DOM元素绘制完就执行,可能DOM元素关联的东西并没有加载完
编写个数:
window.onload():不能同时编写多个
window.onload()=function(){alert("test1")};
window.onload()=function(){alert("test2")};
最终,输出test2
①:可以编写多个
简写形式:
window.onload():无
$()
①:①可简写为$(function(){
//...
});
语法:jQuery的语法是为HTML元素编制的,可以对元素执行某些操作
$(selector).action()
$:表示jquery对象
selector:表示查询和查找HTML元素
action:表示对元素执行的操作
<html>
<head>
<title>Jquery</title>
<!--在head标签内引入jQuery -->
<script src="../jquery-1.11.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<button type="button">click_me</button>
</body>
</html>
DOM对象和JQuery对象
DOM对象:DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成一颗树。我们可以通过JavaScript中的document.getElementById或者document.getElementsByTagName来获取元素节点。像这样获取到的DOM元素就是DOM对象。DOM对象可以使用JavaScript中的方法。
例:var obj = document.getElementById("id");
var objHTML = obj.innerHTML;
JQuery对象:通过jQuery包装DOM对象后产生的对象就是JQuery对象。jQuery对象是jQuery独有的,如果一个对象时jQuery对象,那么就可使用jQuery中的方法。
例:$("#foo").html();//获取id为foo的元素内的html代码,html()是jQuery的方法
在jQuery对象中无法使用DOM对象的任何方法,同样在DOM对象中也无法使用jQuery中的任何方法。
jQuery对象转换成DOM对象:
jQuery对象不能使用DOM中的方法,但如果对jQuery锁提供的方法不熟悉,火车jQuery没有封装想要的方法,不得不使用DOM中的方法,有两种处理方法。[index]或get(index)
1:jquery对象是一个数组对象,可以通过[index]的方法得到相应的DOM对象
jQuery代码:
var $cr = $("#cr");//jquery 对象
var cr = $cr[0];//DOM 对象
alert(cr.checked);
2:jquery本身提供的,通过get(index)方法得到相应的DOM对象
var $cr = $("#cr");//jquery 对象
var cr = $cr.get(0);//DOM 对象
alert(cr.checked);
DOM对象转换成JQuery对象
1:$()将DOM对象包装起来,就可以获得一个jQuery对象,即$(DOM对象)
var cr = document.getElementById("cr");
var $cr = $(cr);
二:选择器
首先,回顾CSS中选择器,CSS是一项出色的技术,它将网页结构和表现形式完全分离,利用CSS选择器能轻松的对某个元素添加样式而不改变HTML的样式,只需要添加不同的CSS规则,就可以得到各种不同样式的网页。要使某个样式应运与特定的html元素,首先要找到该元素。在CSS中执行这一任务的表现规则称为CSS选择器。
CSS选择器分类:
标签选择器:E{ 以文档元素作为选择符 td{ width:120px;
CSS规则 font-size:14px;
} }
ID选择器: #ID{ 以文档的唯一标示符ID #note{width:120px;
css规则 作为选择器 font-size:14px;
} }
类选择器: E.className{ 以文档元素的class作 div.note{width:120px;
css规则 为选择符 font-size:14px;
} }
群组选择器:E1,E2,E3{ 多个选择符应运同样的 td,p,div.a{
css规则 样式规则 font-size:14px;
} }
后代选择器:E F{ 元素E的任意后代元素 #links a{width
css规则 color:red;
} }
通配符选择器:*{ 以文档所有元素作 *{
css规则 为选择符 font-size:14px;
} }
<p style="color:red;font-size:14px">CSS demo</p>
.demo{
color:red;
font-size:14px;
}
<p class="demo">CSS demo</p>
JQuery选择器:
jQuery中的选择器完全继承了CSS的风格。利用jQuery选择器,可以非常便捷和快速的找到特定的DOM元素,给它们添加相应的行为,而无需担心浏览器是否支持这一选择器。学会使用选择器是学习jQuery的基础,jQuery的行为必须在获取到元素后才能生效。
<script type="text/javascript">
function demo(){
alert("javascript demo");
}
</script>
<p onclick="demo()">click_me</p>
<script type="text/javascript">
$(document).ready(function(){
$(".demo").click(function(){
alert("javascript demo");
});
});
</script>
<p class="demo">click_me</p>
CSS选择器找到元素后添加样式
jQuery选择器找到元素后添加行为
jQuery选择器分类:
1:基本选择器:最常用的、最简单的、通过id,class和标签名等来查找DOM元素
用法及描述:
#id 根据给定的id匹配一个元素 单个 $("#test")
.class 根据给定的类名匹配 集合 $(".test")
element 根据给定元素名匹配 集合 $("p")
* 匹配所有元素 集合 $("*")
selector1,selector2,... 将每一个选择器匹配到的元素合并后一起返回
集合 $("div,span,p.myClass")
例:example/2/jquery_selector_1.html
2:层次选择器:如果想通过DOM之间的层次关系来获取特定元素,例如后代元素、子元素、相邻元素、同辈元素等,那么我们就选择层次选择器。
用法及描述:
$("ancestor descendant"):
选取ancestor元素里的所有descendant元素,返回集合元素,
$("div span")-->选取div里所有<span>元素
$("parent>child"):
选取parent下的child元素,返回集合元素,
$("div>span")-->选取<div>元素下元素名是<span>的元素
$("prev+next"):
选取紧接在prev元素后的next元素,返回集合元素
$(".one+div")-->选取class为one的下一个div元素
$("prev~siblings"):
选取prev元素之后的所有siblings元素,返回集合元素
$("#two~div")-->选取id为two的元素后面的所有div同辈元素
注意:后代元素与子元素的区别
在层次选择器中第一种和第二种比较常用,第三、第四种有更加简单的方式来代替,
next()方法代替$("prev+next"),nextAll()代替$("prev~siblings")
例:example/jquery_selector_2.html
3:过滤选择器:主要通过特定的过滤规则选出所需要的DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器以冒号(:)开头。按照不同的过滤规则,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤及表单对象属性过滤选择器。
用法及描述:
基本过滤
:first 选取第一个元素
返回单个元素
$("div:first")选取所有div元素中的第一个div元素
:last 选取最后一个元素
返回单个元素
$("div:last")选取所有div元素中的最后一个div元素
:not(selector) 去处所有与指定选择器匹配的元素
集合
$("input:not(.myClass)")去class不是myClass的<input>元素
:even 选取索引是偶数的所有元素
集合
$("input:even")选取索引为偶数的<input>元素
:odd 选取索引是奇数的所有元素
集合
$("input:even")选取索引为奇数的<input>元素
:eq(index) 选取索引等于index的元素(index从0开始)
单个
$("input.eq(1)")选取索引等于1的<input>元素
:gt(index) 选取索引大于index的元素(index从0开始)
集合
$("input.gt(1)")选取索引大于1的<input>元素
:lt(index) 选取索引小于index的元素(index从0开始)
集合
$("input.lt(1)")选取索引小于1的<input>元素
:header 选取所有标题元素,例如h1、h2、h3
集合
$(":header")选取网页中所有标题元素
:animate 选取当前正在执行动画的所有元素
集合
$("div:animate")选取正在执行动画的div元素
:focus 选取当前获取焦点的元素
集合
$(":focus")选取当前获取焦点的元素
内容过滤:
:contains(text) 选取文本内容为test的元素
集合
$("div:contains('我')")
:empty 选取不包含子元素或者文本的空元素
集合
$("div:empty")
:has(selector) 选取含有选择器匹配的元素的元素
集合
$("div:has(p)")
:parent 选取含有子元素或者文本的元素
集合
$("div:parent")
可见性过滤:根据元素的可见和不可见状态来选择相应元素
:hidden 选取所有不可见元素
集合
$(":hidden")包含<input type="hidden"/>,<div style="display:none">,
<div style="visibility:hidden">.
如果只想去<input>元素,$("input:hidden")
:visible 选取所有可见元素
集合
$("div:visible")
属性过滤选择器:通过元素的属性来获取元素
[attribute] 选取拥有此属性的元素 集合 $("div[id]")
[attribute=value] 选取属性值为value的元素 集合 $("div[title=test]")
[attribut!=value] 选取属性值不为value的元素 集合
$("div[title!=test]")注:没有属性title的div也会选中
[attribut^=value] 选取属性值以value开始的元素 集合 $("div[title^=test]")
[attribut$=value] 选取属性值以value结束的元素 集合 $("div[title$=test]")
[attribut*=value] 选取属性值含有value的元素 集合 $("div[title*=test]")
[attribut|=value] 选取属性等于给定value或以value为前缀结束的元素
集合 $('div[title|="en"]')
[attribut~=value] 选取属性用空格分割的值中包含value的元素
集合 $('div[title~="uk"]')
[attribut1][attribut2][attributN]
title="uk test"
用属性选择器合并成一个符合属性选择器,
满足多个条件 集合
$("div[id][title$='test']")
子元素过滤选择器:
:nth-child(even|odd|index) 选取每个父元素下第index或偶数或奇数元素,
index从1开始 集合
eq(index)只返回一个,:nth-child将为每一个父元素匹配
$("nth-child(1)")
$("nth-child(3n)")
$("nth-child(3n+1)")
$("nth-child(even)")
$("nth-child(odd)")
:first-child 获取每个父元素的第一个子元素 集合
:first只返回单个,:first-child将为每一个父元素匹配
$("ul li:first-child")
:last-child
:only-child 如果某个元素是它父元素的唯一子元素,那么匹配
集合
$("ul li:only-child")
例:example/jquery_selector_3.html
表单对象属性过滤器:主要针对所选择的表单元素进行过滤
:enabled 选取所有可用元素 $("#form1 :enabled")
:disabled 选取所有不可用元素 $("#form2 :disabled")
:checked 选取所有被选中元素(单选框、复选框)$("input :checked")
:selected 选取所有被选中元素(下拉列表)$("select option:selected")
例:example/jquery_selector_3_form.html
4:表单选择器
:input 选取所有<input><textarea><select><button>元素
:text 选取所有单行文本框
:password 选取所有密码框
:radio 选取所有单选框
:checkbox 选取所有多选框
:submit 选取所有提交按钮
:image 选取所有图片按钮
:reset 选取所有重置按钮
:button 选取所有按钮
:file 选取所有上传域
:hidden 选取所有不可见元素
例:example/2/jquery_selector_form.html
注意:
1:选择器当中含有特殊字符“#”,“.”,“]”,“)”
根据w3c规定,属性值中不能有特殊字符,但实际项目中偶尔会遇到,处理方式:转义
例:<div id="id#a"></div>
<div id="id[1]"></div>
获取元素方式:
$("#id\\#a")、$("#id\\[1\\]")
三:JQuery中的DOM操作
DOM(Document Object Model,文档对象模型), 是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松的访问到页面中标准组件。
DOM分类:
1:DOM core 任何支持DOM的程序设计语言都可以使用它,它也并不仅仅使用在网页处理,也可以处理任何一种使用标记语言编写出来的文档,例如,XML。
例:
使用DOM Core获取表单对象方法:document.getElementsByTagName("form")
使用DOM Core获取元素src属性:element.getAttribute("src")
2:HTML-DOM
提供一些更加简明的记号来描述各种HTML元素的属性,只能处理web文档
例:
使用HTML-DOM获取表单对象方法:document.forms
使用HTML-DOM获取元素src属性:element.src
3:CSS_DOM
针对CSS的操作,主要作用获取和设置style对象的各种属性。
例:
element.style.color="red";
详细介绍各种DOM操作:
1:查找节点(通过上一章内容)
a)查找元素节点【text();获取文本内容】
var $li = $("ul li.eq(1)");//获取ul中第二个li节点
var li_txt = $li.text();//获取第二个li元素节点的文本内容
alert(li_txt);
b)查找属性节点【element.attr(attrValue);获取元素属性】
var $para = $("p");//获取p节点
var p_txt = $para.attr("title");//获取p元素节点属性title
alert(p_txt);
2:创建节点
a)创建元素节点
$():jquery的工厂函数, 使用:$(html)方法会根据传入的html标记字符串,创建一个DOM对象,并将这个对象包装成一个jQuery对象。
append();追加
例:创建两个li元素,并添加到DOM文档节点上
var $li_1 = $("<li>西瓜</li>");
var $li_2 = $("<li>葡萄</li>");
$("ul").append($li_1);
$("ul").append($li_2);
b)创建文本点
c)创建属性节点
与创建文本节点类似
var $li_1 = $("<li title='watermelons'>西瓜</li>");
var $li_2 = $("<li title='grapes'>葡萄</li>");
$("ul").append($li_1);
$("ul").append($li_2);
3:插入节点
append(); 向每个匹配元素内部追加内容
<==>
appendTo(); 将所有匹配元素追加到指定元素
prepend(); 向每个匹配元素内部前置内容
<==>
prependTo();将所有匹配元素前置到指定元素
after(); 向每个匹配元素后插入内容
<==>
insertAfter();将所有匹配元素插入到指定元素后
before(); 向每个匹配元素之前插入内容
<==>
insertBefore();将所有匹配元素插入到指定元素之前
4:删除节点
remove(); 从DOM元素中删除所有匹配元素,当某个节点被删除后,该节点所包含的后代节点将同时被删除。此方法返回的是一个指向被删除节点的引用,因此可以在以后再使用这些元素。
例:var $li = $("ul li:eq(2)").remove();
$li.appendTo("ul");
同时,remove()方法可以通过传递参数来选择性的删除元素。
例:$("ul li").remove("li[title!=pineapple]");
detach();
跟remove()一样,也是从DOM中删除所有匹配元素,但是detach()不会把匹配元素从jQuery中删除,因而可以在将来再使用这些元素。但是与remove不同的是,所有绑定的事件、附加的数据等都会保存下来。
例:
$("ul li").click(function(){
alert($(this).html());
});
var $li = $("ul li:eq(2)").detach();
$li.appendTo("ul");
empty();
清空节点,同时清空元素中所有后代节点,之后也不可以使用
例:
var $li = $("ul li:eq(2)").empty();
5:复制节点
clone(); 复制节点后,被复制的新元素不具备复制功能,如果需要新元素也具有复制功能,在clone()方法中传递一个参数true。
例:$("ul li").click(function(){
//this.clone().appendTo("ul");
this.clone(true).appendTo("ul");
});
6:替换节点
replaceWith();将所有匹配元素都替换成指定的HTML或DOM元素
replaceAll();与replaceWith()作用一样,只是颠倒了replaceWith()操作
注意:如果替换之前元素绑定的事件,替换后原先绑定的事件与被替换的元素一起消失,需要在新元素上绑定事件。
例:$("p").replaceWith("<strong>你最不喜欢的水果是?</strong>");
$("<strong>你最不喜欢的水果是?</strong>").replaceAll("p");
7:包裹节点
wrap();将匹配元素一一包裹
例:$("p").wrap("<b></b>");
<b><li></b>
<b><li></b>
<b><li></b>
wrapAll();将匹配元素一起包裹
例:$("p").wrapAll("<b></b>");
<b>
<li>
<li>
<li>
</b>
wrapInner();将匹配元素的子内容(包括文本节点)用其他结构化的标记包裹
例:$("p").wrapInner("<b></b>");
8:属性操作
a)获取属性和设置属性
例:var $para = $("p");
var p_txt = $para.attr("title");
设置
$("p").attr("title","myTitle");
$("p").attr("title":"myTitle","name":"test");
b)删除属性
removeAttr();
$("p").removeAttr("title");
9:样式操作
a)获取样式和设置样式
例:html代码
<p class="myClass"title="选择最喜欢水果">你最不喜欢的水果是?</p>
使用attr()获取
var p_class = $("p").attr("class");
设置
$("p").attr("class","high");
b)追加样式
addClass();
例:html代码
<style>
.high{
font-weight:bold;
color:red;
}
.another{
font-style:italic;
color:blue;
}
</style>
c)移除样式
removeClass();
例:$("p").removeClass("high");
同时删除两个class
$("p").removeClass("high").removeClass("another");
或
$("p").removeClass("high another");
或
$("p").removeClass();
d)切换样式
toggleClass();
例:$("p").toggleClass("another");
e)判断是否含有某个样式
hasClass();如果有,返回true,否则返回false
if($("ul li").hasClass("txt_li")){
//删除
}else{
//添加
}
10:设置和获取html、文本和值
a)html()方法
类似JavaScript中的innerHTML属性,可以读取或设置某个元素的html内容
例:alert($("p").html());
$("p").html("<b>你最喜欢的水果是?</b>");
b)text()方法
类似JavaScript中的innerText属性,可以读取或设置某个元素的文本内容
例:alert($("p").text());
$("p").text("你最喜欢的水果是?");
c)val()方法
类似JavaScript中的value属性,可以读取或设置元素值
例:example/dom_login.html
同时,val()还有另一用处,它能使select、checkbox和radio相应的选项被选中
11:遍历节点
a)children();获取匹配元素的子元素的集合
例:var $ul = $("ul").children();
for(int i=0;i<$ul.length;i++){
alert($ul.get(i).innerHTML);
}
b)next();获取匹配元素后面紧邻的同辈元素
例:var $p1 = $("p").next();
c)prev();获取匹配元素前面紧邻的同辈元素
d)siblings();获取元素前后所有同辈元素
e)closest();获取最近的匹配元素。首先从检查当前元素是否匹配,如果匹配就直接返回,如果不匹配则向上查找父元素,逐级向上直到找到匹配元素,如果没有找到,返回空对象
例:$(document).bind("click",function(e){
$(e.target).closest("li").css("color","red");
});
f)parent(),parents(),closest()区别
parent();获取集合中每个匹配元素的父级元素
例:$(".item-1").parent().css("backgroud-color","red");
parent方法直接从指定类型的父节点开始查找,返回一个元素节点
parents();获取集合中每个匹配元素的祖先元素
例:$(".item-1").parents("ul").css("backgroud-color","red");
parents通parent类似,不同的是,当它找见第一个匹配元素时,不会停止,而是继续查找,返回多个父节点
12:CSS-DOM操作
不足:就是无法提取通过外部CSS设置的样式信息
css()
关于元素定位:
offset();获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,只对可见元素有效。
var offset = $("p").offset();
var left = offset.left;
var top = offset.top;
position();获取元素相对于最近的一个position样式属性设置为relative或者
absolute的祖父节点的相对偏移,与offset一样,返回对象包好top和left
var position = $("p").position();
var left = position.left;
var top = position.top;
scrollTop()和scrollLeft();分别是获取元素的滚动条距顶端和左侧的距离
var $p = $("p");
var scrollTop = $p.scrollTop();
var scrollLeft = $p.scrollLeft();
四:事件、动画
javascript和HTML之间的交互是通过用户和浏览器操作页面是引发的事件来处理。
$(document).ready()是用来加载DOM元素,并给加载好的DOM元素注册相应事件的。
使用$(document).ready()时,注意由于在$(document).ready()方法内注册事件,只要DOM就绪就会被执行,因此可能此时元素的关联文件未下载完。解决这个问题,jQuery提供了另外一个关于页面加载的方法--load()方法。load()方法会在元素的onload事件中绑定一个处理函数。
$(document).ready(function(){}):简写$(function(){})
1:事件绑定
bind();为元素绑定事件来完成某些操作。
格式:bind(type [,data],fn);
参数1:事件类型,类型包括:blur,focus,load,resize,scroll,unload,click,
dblclick,mousedown,mouseup,mousemove,mouseover,moudeout,mouseenter,
mouseleave,change,select,submit,keydown,keypress,keyup,error等
参数2:可选,作为event.data属性值传递给事件对象的额外数据对象
参数3:绑定的处理函数
例:bind.html
is();在代码中判断元素是否显示
show();显示元素
hide();隐藏元素
简写:jQuery将常用的方法包装,提供了一套简写的方法
2:合成事件
hover();模拟光标悬停事件
语法:hover(enter,leave);
当光标移动到元素时,会触发一个指定的第一个函数,移除时,会触发第二个函数
修改 例:bind.html
注意:hover()方法准确的来说是替代jQuery中的bind("mouseenter")和bind("mouseleave")
toggle();模拟鼠标连续单击事件,同时可以切换元素的可见状态
语法:toggle(fn1,fn2,...,fnN);
修改 例:bind.html
3:事件冒泡
当页面中多个元素绑定了相同的事件时,当触发其中一个事件时,事件会按照DOM的层次结构像水泡一样不断向上
例:bubble.html
冒泡事件引发的问题:
a)事件对象:
在程序中使用事件对象只需要为函数传递一个参数。
$("element").bind("click",function(event){
//
});
event:事件对象,当单击element元素时,事件对象就被创建了,这个事件对象只有事件处理函数才能访问。
b)停止事件冒泡:
stopPropagation();停止冒泡事件
修改 例:bubble.html
c)阻止默认行为
preventDefault();阻止默认行为,在网页中元素有自己的默认行为,例如单击超链接跳转、单击提交会表单提交
例:preventDefault.html
4:事件对象的属性
jQuery对事件对象的常用属性进行封装。
a)event.type:获取事件对象的类型
b)event.preventDefault():阻止默认行为
c)event.stopPropagation():停止冒泡
d)event.target:获取触发事件的元素
e)event.relatedTarget:获取触发事件的元素
f)event.pageY和event.PageX:获取光标相对于页面的x坐标和y坐标
g)event.which:在鼠标单击事件中获取到鼠标的左、中、右键;在键盘事件中获取键盘的按键
$("a").mousedown(function(e){
alert(e.which);//1:左;2:中;3:右
})
$("input").keyup(function(e){
alert(e.which);
})
h)event.metaKey键盘事件中获取<crtl>键
5:移除事件
a)移按钮元素除以前注册的事件
unbind([type],[data])
参数1:事件类型
参数2:移除的函数
b)移除按钮元素其中一个事件
绑定时,必须给函数指定一个变量名,用unbind()解绑
$(function(){
$("button").bind("click",fn1=function(){
//...
}).bind("click",fn2=function(){
//...
});
$("button").unbind("click",fn1);s
})
one();绑定的事件只触发一次,之后立刻解绑,用法与bind()相同
6:模拟操作
用户不用自己操作,模拟用户操作触发事件
trigger();
$("#btn").trigger("click");//页面装载完毕后,触发所有#btn绑定的click事件,并显示事件效果
触发自定义事件
$("#btn").bind("myClick",function(){
//... ...
})
$("#btn").trigger("myClick");
传递参数
trigger(type,[,data]);
参数1:触发事件的类型,
参数2:传递给事件处理函数的附加数据,以数组的形式传递
$("#btn").bind("myClick", function(event, message1, message2){
$("#test").append( "<p>"+message1 + message2 +"</p>");
});
//传递给事件处理函数的附加数据,以数组形式传递
$('#btn').trigger("myClick",["我的自定义","事件"]);
执行默认操作
trigger()触发事件后,会执行浏览器默认的操作
如果只想执行绑定的事件,而不想执行浏览器默认的操作,使用triggerHandler()方法
7:动画
a)show()和hide()
参数:speed,middle,slow,
b)fadeIn()和fadeOut()只改变元素的不透明度
例 bind.html
c)slideUp()和slideDown()只改变元素的高度
例 bind.html
d)animate(params,speed,callback);
参数1:一个包含样式属性及值的映射
参数2:速度
参数3:动画完成时执行的函数
e)动画回调函数
8:停止动画、判断是否处于动画状态
a)停止动画:
stop([clearQueue],[gotoEnd]);
clearQueue:是否清空未执行完的动画队列,
gotoEnd:是否直接将正在执行的动画跳到末状态
直接使用stop()方法,结束当前正在执行的动画,并立即执行队列中的下一个动画
b)判断元素是否处于动画状态
if(!$(element).is(":animate")){
//添加新动画
}
c)延迟动画
delay();
$(this).animate({left:"400px",height:"200px",opacity:"1"},3000).delay(1000)
.animate({top:"200px",width:"200px"},3000).delay(2000)
.fadeOut("slow");
9:其他动画方法
toggle(speed,[callback])
slideToggle(speed,[callback]):通过高度变化来切换匹配元素的可见性
fadeTo(speed,opacity,[callback]):把元素的不透明度以渐进的方式调整到指定值。
五:对表单、表格的操作
表单和表格都是html的重要组成部分,分别用于采集、提交用户输入的信息和显示列表。
表单应用:
表单组成:
表单标签:包含处理表单数据所用的服务器端程序URL及表单提交到服务器的方法
表单域:包含文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框及文件上传框。
表单按钮:包含提交按钮、复位按钮和一般按钮,用于将数据传送到服务器上或者取消传送,还可以用来控制其他定义了处理脚本的处理工作。
单行文本框应用:
例:example/5/form_test1.html
多行文本框:
高度变化、滚动条高度变化:
例:example/5/form_test2.html
复选框应用:主要是针对复选框的全选、反选和全部选等操作
jquery的1.6之后的版本中attr()用prop()代替
例:example/5/form_test3.html
下拉列表的应用:后台添加新闻管理员登陆时选择所负责的模块
例:example/5/form_test4.html
表单验证:
例:example/5/form_test5.html
表格应用:
普通隔行变色、单选框控制表格行高亮、复选框控制表格高亮、表格内容筛选
例:example/5/table_test1.html
表格展开关闭
例:example/5/table_test2.html
其他应用:
六:JQuery与AJax应用
Ajax:(Asynchronous javaScript and XML),它不是一个单一的技术,而是有机的利用了一系列交互式网络应运相关技术所形成的集合体,它的出现开创了无刷新更新页面的新时代,并替代了传统的web发送和通过隐藏的框架来进行异步提交的趋势,是web开发应运的里程碑。
优势:
不需要插件支持:
优秀的用户体验:
提高web程序的性能:
减轻服务器和带宽的压力:
不足:
浏览器对XMLHttpRequest对象的支持度不足:
破坏浏览器前进和后退的正常功能:
对搜索引擎的支持不足:
开发和调试工具不足:
jQuery中的ajax
jQuery对ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load(),$.get(),$.post()方法,第三层是$.getScript(),$.getJSON()方法。
load()方法:load方法是jQuery中最为简单的常用的ajax方法,能够载入远程html代码并插入DOM中,通常用来从服务器上获取静态的数据文件
1:载入html文档
语法格式:load(url [,data] [,callback])
url(String):请求html页面的URL地址
data(object):可选参数,发送至服务器的key/value数据
callback(function):可选参数,请求完成时的回调函数,无论请求成功还是失败
2:筛选载入的html文档
load方法的URL参数的语法结构:"url selector"
例:load("test.html .para")
3:传递方式
load方法的传递方式是根据参数data自动指定的,如果没有参数传递,则采用get的方式传递,反之,则会自动转换为post方式。
4:回调参数
对于必须在加载完成后才能继续的操作,load方法提供了回调函数,该函数有3个参数,分别代表请求返回的内容、请求状态和XMLHttpRequest对象。
$("#show").load(url,function(responseText,textStatus,XMLHttpRequest){
//responseText请求返回的内容
//textStatus请求状态
//XMLHttpRequest:XMLHttpRequest对象
});
$.get()方法
get提交方式
语法格式:$.get(url [,data] [,callback] [,type])
url:请求html页面的URL地址
data(object):可选参数,发送至服务器的key/value数据会作为QueryString附加到请求的URL中
callback:载入成功时回调函数自动将请求结果和状态传递给该方法
type:服务器返回内容的格式,XML、html、script、json、text
数据格式
HTML:
XML:返回数据格式为XML文档的过程实现起来比html片段要稍微复杂,但是XML文档的可移植性是其他数据格式无法比拟的,因此这种格式提供的数据的重用性将极大提高。
JSON:之所以有JSON这样的数据格式文件,很大程度上是因为XML文档体积大而且难以解析。JSON文件和XML文件一样,也可以方便的被重用,而且JSON文件非常简洁,易懂。
$.post()方法
与$.get()方法的结构和使用方式都相同,但是他们之间也有区别
另外,当load方法带有参数传递时,会使用post方式发送请求,因此也可以使用load方法来完成同样的功能。
GET与POST区别:
$.getScript()
有时候,在页面初次加载的时就取得所需要的廍Javascript文件时完全没有必要的。虽然也可以在需要某个js文件时动态的创建<script>标签,
$(document.createElement("script")).attr("src","test.js").appendTo("head");
或
$("<script type='text/javascript' src='test.js'").appendTo("head");
但是比较麻烦,可以使用$.getScript()方便的获取js文件
$(function(){
$("#send").click(function(){
$.getScript("test.js");
})
})
$.getJSON()
用来加载json文件,用法与$.getScript()一样
$(function(){
$("#send").click(function(){
$.getJSON("test.json");
})
})
当在页面点击加载后,页面没有任何效果,因为没有处理返回的数据,所以jQuery提供了回调函数,处理返回的数据,可以在函数中通过data变量遍历数据,也可以使用迭代的方式为每一项构建html代码($.each()),
$(function(){
$("#send").click(function(){
$.getJSON("test.json",function(data){
$("#show").empty;
var html = "";
$.each(data,function(commentIndex,comment){
html += "<div class='comment'><h6>"+
username+":</h6><p class='para'>"+
content+"</p></div>";
})
$("#show").html(html);
});
})
})
$.each()是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第一个参数,以一个回调函数作为第二个参数,回调函数有拥有两个参数,第一个参数为对象的成员或数组的索引,第二个参数为对应变量或内容。
$.ajax()方法
结构:$.ajax(options)
options:这个参数包含了$.ajax()方法所需要的请求设置及回调函数等信息,参数以key/value形式存在,所有参数都是可选的。
URL:(string):(默认为当前页面地址)发送请求的地址
type:(String):请求方式(POST或GET),默认为GET
timeout:(number):设置请求超时时间。此设置将覆盖$.ajaxSetup()方法的全局设置
data:(object/string):发送到服务器的数据。如果已经不是字符串,将自动转化为字符串格式。GET请求中将附加到URL后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式。例如{foo1:"bar1",foo2:"bar2"}转换为
&foo1=bar1&foo2=bar2。如果是数组,jQuery将自动为不同值对应相同名称。例如:{foo:["bar1","bar2"]}转化为&foo=bar1&foo=bar2
dataType:(string):预期服务器返回的数据类型。如果不指定服务器将自动根据HTTP包MIME信息返回responseXML或者responseText,并作为回调函数的参数传递。可用类型:
XML:返回XML文档,可用jQuery处理
html:返回纯文本的html信息。
script:返回纯文本的javascript代码。
json:返回json数据。
text:返回纯文本
beforeSend:(function):发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义的HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。一个参数
function(XMLHttpRequest){
this;//调用本次ajax请求传递的options参数
}
complete:(function):请求完成后调用的回调函数,两个参数
function(XMLHttpRequest,textStatus){
this;//调用本次ajax请求传递的options参数
}
success:(function):请求成功好调用的回调函数,两个参数
function(data,textStatus){
this;//调用本次ajax请求传递的options参数
}
error:(function):请求失败后执行的回调函数,三个参数,XMLHttpRequest对象、错误信息、捕获的错误对象
function(XMLHttpRequest,textStatus,errorThrow){
this;//调用本次ajax请求传递的options参数
}
global:(boolean):默认为true,表示是否触发求全局ajax事件。false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件
前面说到的方法都是基于$.ajax构建的,因此可以用$.ajax替代
$(function(){
$("#send").click(function(){
$.ajax({
type:"GET",
url:"test.js",
data:script
})
})
})
$(function(){
$("#send").click(function(){
$.ajax({
type:"GET",
url:"ArgsTestServlet?msg="+$("#msg"),
data:json,
success:function(data){
//... ...
}
})
})
})
序列化元素:
serialize():作用于jQuery对象,可将DOM元素内容序列化为字符串,用于ajax请求。
$(function(){
$("#send").click(function(){
$.get("ArgsTestServlet",{
username:$("#username").val(),
content:$("#content").val()
},function(data,textStatus){
$("#show").html(data);
})
})
})
改为:
$(function(){
$("#send").click(function(){
$.get("ArgsTestServlet",$("#myform").serialize()
,function(data,textStatus){
$("#show").html(data);
})
})
})
serializeArray()方法:
该方法将DOM元素序列化后返回json格式的数据。既然是对象,可以使用$.each()对数据进行迭代输出。
$(function(){
var fields = $(":checkbox,:radio").serializeArray();
$.each(fields,function(i,field){
$("#result").append(field.value+",");
})
})
$.param()方法:可以对一个数组或对象按照key/value进行序列化
var obj = {a:1,b:2,c:3}
var k = $.param(obj);
alert(k);//结果为a=1&b=2&c=3
jquery中ajax全局事件
ajaxComplete(callback):
ajaxError(callback)
ajaxSend(callback)
ajaxSuccess(callback)
发表评论
-
validate自动校验
2016-09-23 15:32 1078<!DOCTYPE html> <html& ... -
jquery选择器总结
2016-09-22 10:59 511jQuery 的选择器可谓之强 ... -
网页选项卡的切换
2016-09-22 10:53 471<!DOCTYPE html> <html& ... -
JQuery的extend扩展
2016-09-18 15:23 450JQuery的extend扩展方法: Jquery ... -
jquery实现全选,全不选,反选效果
2016-09-13 15:41 452<!DOCTYPE html PUBLIC " ... -
jquery实现全选,全不选,反选效果
2016-09-13 15:40 0<!DOCTYPE HTML> <html& ... -
封装数据_方法
2016-08-26 17:30 517var simple_confNetwork={ in ... -
jquery对对象数组的遍历的两种方式
2016-08-26 15:00 1946jquery对对象数组的遍历的两种方式 data: [ { ... -
query,bootstrap在开发中使用的总结
2016-08-24 09:50 619当ajax请求返回的数据date如上面所显示,要达到下图所示的 ... -
select初始化操作
2016-08-23 15:54 817select 初始化值,option 的value是id,内容 ... -
select初始化操作
2016-08-23 15:50 0select 初始化值,option 的value是id,内容 ... -
bootstrap日期插件daterangepicker的使用
2016-08-22 10:59 947今天用的了bootstrap日期插件感觉搜索的资料不是很多在此 ... -
Vue.js 60 分钟快速入门
2016-08-19 09:20 575Vue.js介绍 Vue.js是当下很火的一个JavaScr ... -
Java构造和解析Json数据的两种方法详解一
2016-08-18 13:01 444在www.json.org上公布了很多JAVA下的json ... -
HTML5时钟
2016-08-18 12:31 542本示例使用HTML5的canvas标签和Javascript脚 ... -
同步更新input中的内容
2016-08-16 14:15 566HTML: <div class="form ... -
JQuery验证
2016-08-16 09:46 548js-----> var table = in ... -
jQuery.Validate验证库的使用
2016-08-15 16:24 524一、用前必备 转载:http://www.cnblogs.c ...
相关推荐
内容概要:本文探讨了模糊故障树(FFTA)在工业控制系统可靠性分析中的应用,解决了传统故障树方法无法处理不确定数据的问题。文中介绍了模糊数的基本概念和实现方式,如三角模糊数和梯形模糊数,并展示了如何用Python实现模糊与门、或门运算以及系统故障率的计算。此外,还详细讲解了最小割集的查找方法、单元重要度的计算,并通过实例说明了这些方法的实际应用场景。最后,讨论了模糊运算在处理语言变量方面的优势,强调了在可靠性分析中处理模糊性和优化计算效率的重要性。 适合人群:从事工业控制系统设计、维护的技术人员,以及对模糊数学和可靠性分析感兴趣的科研人员。 使用场景及目标:适用于需要评估复杂系统可靠性的场合,特别是在面对不确定数据时,能够提供更准确的风险评估。目标是帮助工程师更好地理解和预测系统故障,从而制定有效的预防措施。 其他说明:文中提供的代码片段和方法可用于初步方案验证和技术探索,但在实际工程项目中还需进一步优化和完善。
内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
内容概要:本文详细介绍了基于西门子S7-200 PLC和组态王软件构建的八层电梯控制系统。首先阐述了系统的硬件配置,包括PLC的IO分配策略,如输入输出信号的具体分配及其重要性。接着深入探讨了梯形图编程逻辑,涵盖外呼信号处理、轿厢运动控制以及楼层判断等关键环节。随后讲解了组态王的画面设计,包括动画效果的实现方法,如楼层按钮绑定、轿厢移动动画和门开合效果等。最后分享了一些调试经验和注意事项,如模拟困人场景、防抖逻辑、接线艺术等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定基础的人群。 使用场景及目标:适用于需要设计和实施小型电梯控制系统的工程项目。主要目标是帮助读者掌握PLC编程技巧、组态画面设计方法以及系统联调经验,从而提高项目的成功率。 其他说明:文中提供了详细的代码片段和调试技巧,有助于读者更好地理解和应用相关知识点。此外,还强调了安全性和可靠性方面的考量,如急停按钮的正确接入和硬件互锁设计等。
内容概要:本文介绍了如何将CarSim的动力学模型与Simulink的智能算法相结合,利用模型预测控制(MPC)实现车辆的智能超车换道。主要内容包括MPC控制器的设计、路径规划算法、联合仿真的配置要点以及实际应用效果。文中提供了详细的代码片段和技术细节,如权重矩阵设置、路径跟踪目标函数、安全超车条件判断等。此外,还强调了仿真过程中需要注意的关键参数配置,如仿真步长、插值设置等,以确保系统的稳定性和准确性。 适合人群:从事自动驾驶研究的技术人员、汽车工程领域的研究人员、对联合仿真感兴趣的开发者。 使用场景及目标:适用于需要进行自动驾驶车辆行为模拟的研究机构和企业,旨在提高超车换道的安全性和效率,为自动驾驶技术研发提供理论支持和技术验证。 其他说明:随包提供的案例文件已调好所有参数,可以直接导入并运行,帮助用户快速上手。文中提到的具体参数和配置方法对于初学者非常友好,能够显著降低入门门槛。
包括:源程序工程文件、Proteus仿真工程文件、论文材料、配套技术手册等 1、采用51单片机作为主控; 2、采用AD0809(仿真0808)检测"PH、氨、亚硝酸盐、硝酸盐"模拟传感; 3、采用DS18B20检测温度; 4、采用1602液晶显示检测值; 5、检测值同时串口上传,调试助手监看; 6、亦可通过串口指令对加热器、制氧机进行控制;
内容概要:本文详细介绍了双馈永磁风电机组并网仿真模型及其短路故障分析方法。首先构建了一个9MW风电场模型,由6台1.5MW双馈风机构成,通过升压变压器连接到120kV电网。文中探讨了风速模块的设计,包括渐变风、阵风和随疾风的组合形式,并提供了相应的Python和MATLAB代码示例。接着讨论了双闭环控制策略,即功率外环和电流内环的具体实现细节,以及MPPT控制用于最大化风能捕获的方法。此外,还涉及了短路故障模块的建模,包括三相电压电流特性和离散模型与phasor模型的应用。最后,强调了永磁同步机并网模型的特点和注意事项。 适合人群:从事风电领域研究的技术人员、高校相关专业师生、对风电并网仿真感兴趣的工程技术人员。 使用场景及目标:适用于风电场并网仿真研究,帮助研究人员理解和优化风电机组在不同风速条件下的性能表现,特别是在短路故障情况下的应对措施。目标是提高风电系统的稳定性和可靠性。 其他说明:文中提供的代码片段和具体参数设置有助于读者快速上手并进行实验验证。同时提醒了一些常见的错误和需要注意的地方,如离散化步长的选择、初始位置对齐等。
适用于空手道训练和测试场景
内容概要:本文介绍了金牌音乐作词大师的角色设定、背景经历、偏好特点、创作目标、技能优势以及工作流程。金牌音乐作词大师凭借深厚的音乐文化底蕴和丰富的创作经验,能够为不同风格的音乐创作歌词,擅长将传统文化元素与现代流行文化相结合,创作出既富有情感又触动人心的歌词。在创作过程中,会严格遵守社会主义核心价值观,尊重用户需求,提供专业修改建议,确保歌词内容健康向上。; 适合人群:有歌词创作需求的音乐爱好者、歌手或音乐制作人。; 使用场景及目标:①为特定主题或情感创作歌词,如爱情、励志等;②融合传统与现代文化元素创作独特风格的歌词;③对已有歌词进行润色和优化。; 阅读建议:阅读时可以重点关注作词大师的创作偏好、技能优势以及工作流程,有助于更好地理解如何创作出高质量的歌词。同时,在提出创作需求时,尽量详细描述自己的情感背景和期望,以便获得更贴合心意的作品。
linux之用户管理教程.md
包括:源程序工程文件、Proteus仿真工程文件、配套技术手册等 1、采用51/52单片机作为主控芯片; 2、采用1602液晶显示设置及状态; 3、采用L298驱动两个电机,模拟机械臂动力、移动底盘动力; 3、首先按键配置-待搬运物块的高度和宽度(为0不能开始搬运); 4、按下启动键开始搬运,搬运流程如下: 机械臂先把物块抓取到机器车上, 机械臂减速 机器车带着物块前往目的地 机器车减速 机械臂把物块放下来 机械臂减速 机器车回到物块堆积处(此时机器车是空车) 机器车减速 蜂鸣器提醒 按下复位键,结束本次搬运
内容概要:本文详细介绍了基于下垂控制的三相逆变器电压电流双闭环控制的仿真方法及其在MATLAB/Simulink和PLECS中的具体实现。首先解释了下垂控制的基本原理,即有功调频和无功调压,并给出了相应的数学表达式。随后讨论了电压环和电流环的设计与参数整定,强调了两者带宽的差异以及PI控制器的参数选择。文中还提到了一些常见的调试技巧,如锁相环的响应速度、LC滤波器的谐振点处理、死区时间设置等。此外,作者分享了一些实用的经验,如避免过度滤波、合理设置采样周期和下垂系数等。最后,通过突加负载测试展示了系统的动态响应性能。 适合人群:从事电力电子、微电网研究的技术人员,尤其是有一定MATLAB/Simulink和PLECS使用经验的研发人员。 使用场景及目标:适用于希望深入了解三相逆变器下垂控制机制的研究人员和技术人员,旨在帮助他们掌握电压电流双闭环控制的具体实现方法,提高仿真的准确性和效率。 其他说明:本文不仅提供了详细的理论讲解,还结合了大量的实战经验和调试技巧,有助于读者更好地理解和应用相关技术。
内容概要:本文详细介绍了光伏并网逆变器的全栈开发资料,涵盖了从硬件设计到控制算法的各个方面。首先,文章深入探讨了功率接口板的设计,包括IGBT缓冲电路、PCB布局以及EMI滤波器的具体参数和设计思路。接着,重点讲解了主控DSP板的核心控制算法,如MPPT算法的实现及其注意事项。此外,还详细描述了驱动扩展板的门极驱动电路设计,特别是光耦隔离和驱动电阻的选择。同时,文章提供了并联仿真的具体实现方法,展示了环流抑制策略的效果。最后,分享了许多宝贵的实战经验和调试技巧,如主变压器绕制、PWM输出滤波、电流探头使用等。 适合人群:从事电力电子、光伏系统设计的研发工程师和技术爱好者。 使用场景及目标:①帮助工程师理解和掌握光伏并网逆变器的硬件设计和控制算法;②提供详细的实战经验和调试技巧,提升产品的可靠性和性能;③适用于希望深入了解光伏并网逆变器全栈开发的技术人员。 其他说明:文中不仅提供了具体的电路设计和代码实现,还分享了许多宝贵的实际操作经验和常见问题的解决方案,有助于提高开发效率和产品质量。
内容概要:本文详细介绍了粒子群优化(PSO)算法与3-5-3多项式相结合的方法,在机器人轨迹规划中的应用。首先解释了粒子群算法的基本原理及其在优化轨迹参数方面的作用,随后阐述了3-5-3多项式的数学模型,特别是如何利用不同阶次的多项式确保轨迹的平滑过渡并满足边界条件。文中还提供了具体的Python代码实现,展示了如何通过粒子群算法优化时间分配,使3-5-3多项式生成的轨迹达到时间最优。此外,作者分享了一些实践经验,如加入惩罚项以避免超速,以及使用随机扰动帮助粒子跳出局部最优。 适合人群:对机器人运动规划感兴趣的科研人员、工程师和技术爱好者,尤其是有一定编程基础并对优化算法有初步了解的人士。 使用场景及目标:适用于需要精确控制机器人运动的应用场合,如工业自动化生产线、无人机导航等。主要目标是在保证轨迹平滑的前提下,尽可能缩短运动时间,提高工作效率。 其他说明:文中不仅给出了理论讲解,还有详细的代码示例和调试技巧,便于读者理解和实践。同时强调了实际应用中需要注意的问题,如系统的建模精度和安全性考量。
KUKA机器人相关资料
内容概要:本文详细探讨了光子晶体中的束缚态在连续谱中(BIC)及其与轨道角动量(OAM)激发的关系。首先介绍了光子晶体的基本概念和BIC的独特性质,随后展示了如何通过Python代码模拟二维光子晶体中的BIC,并解释了BIC在光学器件中的潜在应用。接着讨论了OAM激发与BIC之间的联系,特别是BIC如何增强OAM激发效率。文中还提供了使用有限差分时域(FDTD)方法计算OAM的具体步骤,并介绍了计算本征态和三维Q值的方法。此外,作者分享了一些实验中的有趣发现,如特定条件下BIC表现出OAM特征,以及不同参数设置对Q值的影响。 适合人群:对光子晶体、BIC和OAM感兴趣的科研人员和技术爱好者,尤其是从事微纳光子学研究的专业人士。 使用场景及目标:适用于希望通过代码模拟深入了解光子晶体中BIC和OAM激发机制的研究人员。目标是掌握BIC和OAM的基础理论,学会使用Python和其他工具进行模拟,并理解这些现象在实际应用中的潜力。 其他说明:文章不仅提供了详细的代码示例,还分享了许多实验心得和技巧,帮助读者避免常见错误,提高模拟精度。同时,强调了物理离散化方式对数值计算结果的重要影响。
内容概要:本文详细介绍了如何使用C#和Halcon 17.12构建一个功能全面的工业视觉项目。主要内容涵盖项目配置、Halcon脚本的选择与修改、相机调试、模板匹配、生产履历管理、历史图像保存以及与三菱FX5U PLC的以太网通讯。文中不仅提供了具体的代码示例,还讨论了实际项目中常见的挑战及其解决方案,如环境配置、相机控制、模板匹配参数调整、PLC通讯细节、生产数据管理和图像存储策略等。 适合人群:从事工业视觉领域的开发者和技术人员,尤其是那些希望深入了解C#与Halcon结合使用的专业人士。 使用场景及目标:适用于需要开发复杂视觉检测系统的工业应用场景,旨在提高检测精度、自动化程度和数据管理效率。具体目标包括但不限于:实现高效的视觉处理流程、确保相机与PLC的无缝协作、优化模板匹配算法、有效管理生产和检测数据。 其他说明:文中强调了框架整合的重要性,并提供了一些实用的技术提示,如避免不同版本之间的兼容性问题、处理实时图像流的最佳实践、确保线程安全的操作等。此外,还提到了一些常见错误及其规避方法,帮助开发者少走弯路。
内容概要:本文探讨了分布式电源(DG)接入对9节点配电网节点电压的影响。首先介绍了9节点配电网模型的搭建方法,包括定义节点和线路参数。然后,通过在特定节点接入分布式电源,利用Matlab进行潮流计算,模拟DG对接入点及其周围节点电压的影响。最后,通过绘制电压波形图,直观展示了不同DG容量和接入位置对配电网电压分布的具体影响。此外,还讨论了电压越限问题以及不同线路参数对电压波动的影响。 适合人群:电力系统研究人员、电气工程学生、从事智能电网和分布式能源研究的专业人士。 使用场景及目标:适用于研究分布式电源接入对配电网电压稳定性的影响,帮助优化分布式电源的规划和配置,确保电网安全稳定运行。 其他说明:文中提供的Matlab代码和图表有助于理解和验证理论分析,同时也为后续深入研究提供了有价值的参考资料。
内容概要:本文探讨了在两级电力市场环境中,针对省间交易商的最优购电模型的研究。文中提出了一个双层非线性优化模型,用于处理省内电力市场和省间电力交易的出清问题。该模型采用CVaR(条件风险价值)方法来评估和管理由新能源和负荷不确定性带来的风险。通过KKT条件和对偶理论,将复杂的双层非线性问题转化为更易求解的线性单层问题。此外,还通过实际案例验证了模型的有效性,展示了不同风险偏好设置对购电策略的影响。 适合人群:从事电力系统规划、运营以及风险管理的专业人士,尤其是对电力市场机制感兴趣的学者和技术专家。 使用场景及目标:适用于希望深入了解电力市场运作机制及其风险控制手段的研究人员和技术开发者。主要目标是为省间交易商提供一种科学有效的购电策略,以降低风险并提高经济效益。 其他说明:文章不仅介绍了理论模型的构建过程,还包括具体的数学公式推导和Python代码示例,便于读者理解和实践。同时强调了模型在实际应用中存在的挑战,如数据精度等问题,并指出了未来改进的方向。
内容概要:本文详细介绍了一套成熟的西门子1200 PLC轴运动控制程序模板,涵盖多轴伺服控制、电缸控制、PLC通讯、气缸报警块、完整电路图、威纶通触摸屏程序和IO表等方面的内容。该模板已在多个项目中成功应用,如海康威视的路由器外壳装配机,确保了系统的稳定性和可靠性。文中不仅提供了具体的代码示例,还分享了许多实战经验和技巧,如参数设置、异常处理机制、通讯优化等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要进行PLC编程和轴运动控制的从业者。 使用场景及目标:适用于需要快速搭建稳定可靠的PLC控制系统的企业和个人开发者。通过学习和应用该模板,可以提高开发效率,减少调试时间和错误发生率,从而更好地满足项目需求。 其他说明:文章强调了程序模板的实用性,特别是在异常处理和参数配置方面的独特设计,能够有效应对复杂的工业环境挑战。此外,还提到了一些常见的陷阱和解决方案,帮助读者避开常见错误,顺利实施项目。
内容概要:本文详细探讨了微网电池储能容量优化配置的方法和技术。随着能源结构的转型和分布式能源的发展,微网作为新型电力系统受到广泛关注。文中介绍了混合整数规划(MILP)在储能容量优化配置中的应用,通过建立目标函数和约束条件,实现了储能系统运行成本最小化和经济效益最大化。具体而言,模型考虑了储能系统的初始投资成本、运维成本以及能量平衡、储能容量和充放电功率等约束条件。此外,文章还讨论了实际应用中的挑战,如数据获取困难、模型复杂性和求解器性能等问题,并提出了相应的改进建议。 适合人群:从事微网系统研究的技术人员、研究人员和相关领域的学生。 使用场景及目标:适用于需要优化微网储能系统配置的研究和工程项目,旨在降低运行成本、提高经济效益,并确保系统稳定运行。 其他说明:文章提供了详细的MATLAB代码示例,展示了如何使用intlinprog函数求解混合整数线性规划问题。同时,强调了在实际应用中需要根据具体情况调整模型和参数,以应对复杂多变的现实环境。