您的位置:首页 > Web前端 > JQuery

Jquery和ajax笔记

2016-12-11 21:55 2306 查看


什么是 jQuery ?

jQuery是一个JavaScript函数库。

jQuery是一个轻量级的"写的少,做的多"的JavaScript库。

jQuery库包含以下功能:

HTML 元素选取

HTML 元素操作

CSS 操作

HTML 事件函数

JavaScript 特效和动画

HTML DOM 遍历和修改

AJAX

Utilities

提示: 除此之外,Jquery还提供了大量的插件。



通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions)。


jQuery 语法

jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。

基础语法: $(selector).action()

美元符号定义 jQuery

选择符(selector)"查询"和"查找" HTML 元素

jQuery 的 action() 执行对元素的操作

实例:

$(this).hide() - 隐藏当前元素

$("p").hide() - 隐藏所有 <p> 元素

$("p.test").hide() - 隐藏所有 class="test" 的 <p> 元素

$("#test").hide() - 隐藏所有 id="test" 的元素


文档就绪事件

您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中:

$(document).ready(function(){

// 开始写 jQuery 代码...

});

这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。

如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:

试图隐藏一个不存在的元素

获得未完全加载的图像的大小

提示:简洁写法(与以上写法效果相同):

$(function(){

// 开始写 jQuery 代码...

});

以上两种方式你可以选择你喜欢的方式实现文档就绪后执行jQuery方法。


元素选择器

jQuery 元素选择器基于元素名选取元素。

在页面中选取所有 <p> 元素:

$("p")

实例

用户点击按钮后,所有 <p> 元素都隐藏:


实例

$(document).ready(function(){

$("button").click(function(){

$("p").hide();

});

});


#id 选择器

jQuery #id 选择器通过 HTML 元素的 id 属性选取指定的元素。

页面中元素的 id 应该是唯一的,所以您要在页面中选取唯一的元素需要通过 #id 选择器。

通过 id 选取元素语法如下:

$("#test")

实例

当用户点击按钮后,有 id="test" 属性的元素将被隐藏:


实例

$(document).ready(function(){

$("button").click(function(){

$("#test").hide();

});

});


.class 选择器

jQuery 类选择器可以通过指定的 class 查找元素。

语法如下:

$(".test")

实例

用户点击按钮后所有带有 class="test" 属性的元素都隐藏:


实例

$(document).ready(function(){

$("button").click(function(){

$(".test").hide();

});

});


更多实例

语法描述实例
$("*")选取所有元素在线实例
$(this)选取当前 HTML 元素在线实例
$("p.intro")选取 class 为 intro 的 <p> 元素在线实例
$("p:first")选取第一个 <p> 元素在线实例
$("ul li:first")选取第一个 <ul> 元素的第一个 <li> 元素在线实例
$("ul li:first-child")选取每个 <ul> 元素的第一个 <li> 元素在线实例
$("[href]")选取带有 href 属性的元素在线实例
$("a[target='_blank']")选取所有 target 属性值等于 "_blank" 的 <a> 元素在线实例
$("a[target!='_blank']")选取所有 target 属性值不等于 "_blank" 的 <a> 元素在线实例
$(":button")选取所有 type="button" 的 <input> 元素 和 <button> 元素在线实例
$("tr:even")选取偶数位置的 <tr> 元素在线实例
$("tr:odd")选取奇数位置的 <tr> 元素在线实例


独立文件中使用 jQuery 函数

如果您的网站包含许多页面,并且您希望您的 jQuery 函数易于维护,那么请把您的 jQuery 函数放到独立的 .js 文件中。

当我们在教程中演示 jQuery 时,会将函数直接添加到 <head> 部分中。不过,把它们放到一个单独的文件中会更好,就像这样(通过 src 属性来引用文件):


实例

<head>

<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js">

</script>

<script src="my_jquery_functions.js"></script>

</head>

jQuery 是为事件处理特别设计的。


什么是事件?

页面对不同访问者的响应叫做事件。

事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。

实例:

在元素上移动鼠标。

选取单选按钮

点击元素

在事件中经常使用术语"触发"(或"激发")例如: "当您按下按键时触发 keypress 事件"。

常见 DOM 事件:
鼠标事件键盘事件表单事件文档/窗口事件
clickkeypresssubmitload
dblclickkeydownchangeresize
mouseenterkeyupfocusscroll
mouseleaveblurunload


常用的 jQuery 事件方法

$(document).ready()

$(document).ready() 方法允许我们在文档完全加载完后执行函数。该事件方法在 jQuery 语法 章节中已经提到过。

click()

click() 方法是当按钮点击事件被触发时会调用一个函数。

该函数在用户点击 HTML 元素时执行。

在下面的实例中,当点击事件在某个 <p> 元素上触发时,隐藏当前的 <p> 元素:


实例

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

$(this).hide();

});

尝试一下
»

dblclick()

当双击元素时,会发生 dblclick 事件。

dblclick() 方法触发 dblclick 事件,或规定当发生 dblclick 事件时运行的函数:


实例

$("p").dblclick(function(){

$(this).hide();

});

尝试一下
»

mouseenter()

当鼠标指针穿过元素时,会发生 mouseenter 事件。

mouseenter() 方法触发 mouseenter 事件,或规定当发生 mouseenter 事件时运行的函数:


实例

$("#p1").mouseenter(function(){

alert("You entered p1!");

});

尝试一下
»

mouseleave()

当鼠标指针离开元素时,会发生 mouseleave 事件。

mouseleave() 方法触发 mouseleave 事件,或规定当发生 mouseleave 事件时运行的函数:


实例

$("#p1").mouseleave(function(){

alert("Bye! You now leave p1!");

});

尝试一下
»

mousedown()

当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。

mousedown() 方法触发 mousedown 事件,或规定当发生 mousedown 事件时运行的函数:


实例

$("#p1").mousedown(function(){

alert("Mouse down over p1!");

});

尝试一下
»

mouseup()

当在元素上松开鼠标按钮时,会发生 mouseup 事件。

mouseup() 方法触发 mouseup 事件,或规定当发生 mouseup 事件时运行的函数:


实例

$("#p1").mouseup(function(){

alert("Mouse up over p1!");

});

尝试一下
»

hover()

hover()方法用于模拟光标悬停事件。

当鼠标移动到元素上时,会触发指定的第一个函数(mouseenter);当鼠标移出这个元素时,会触发指定的第二个函数(mouseleave)。


实例

$("#p1").hover(function(){

alert("You entered p1!");

},

function(){

alert("Bye! You now leave p1!");

});

尝试一下
»

focus()

当元素获得焦点时,发生 focus 事件。

当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。

focus() 方法触发 focus 事件,或规定当发生 focus 事件时运行的函数:


实例

$("input").focus(function(){

$(this).css("background-color","#cccccc");

});

尝试一下
»

blur()

当元素失去焦点时,发生 blur 事件。

blur() 方法触发 blur 事件,或规定当发生 blur 事件时运行的函数:


实例

$("input").blur(function(){

$(this).css("background-color","#ffffff");

});

尝试一下
»


jQuery hide() 和 show()

通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素:


实例

$("#hide").click(function(){

$("p").hide();

});

$("#show").click(function(){

$("p").show();

});

尝试一下
»

语法:

$(selector).hide(speed,callback);

$(selector).show(speed,callback);

可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" 或毫秒。

可选的 callback 参数是隐藏或显示完成后所执行的函数名称。

下面的例子演示了带有 speed 参数的 hide() 方法:


实例

$("button").click(function(){

$("p").hide(1000);

});

尝试一下
»


jQuery 效果 - 淡入淡出

通过 jQuery,您可以实现元素的淡入淡出效果。

点击展示 淡入/淡出 面板

实例

jQuery fadeIn()

演示 jQuery fadeIn() 方法。

jQuery fadeOut()

演示 jQuery fadeOut() 方法。

jQuery fadeToggle()

演示 jQuery fadeToggle() 方法。

jQuery fadeTo()

演示 jQuery fadeTo() 方法。

jQuery Fading 方法

通过 jQuery,您可以实现元素的淡入淡出效果。

jQuery 拥有下面四种 fade 方法:

fadeIn()

fadeOut()

fadeToggle()

fadeTo()

jQuery fadeIn() 方法

jQuery fadeIn() 用于淡入已隐藏的元素。

语法:

$(selector).fadeIn(speed,callback);

可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。.

可选的 callback 参数是 fading 完成后所执行的函数名称。

下面的例子演示了带有不同参数的 fadeIn() 方法:


实例

$("button").click(function(){

$("#div1").fadeIn();

$("#div2").fadeIn("slow");

$("#div3").fadeIn(3000);

});

尝试一下
»

jQuery fadeOut() 方法

jQuery fadeOut() 方法用于淡出可见元素。

语法:

$(selector).fadeOut(speed,callback);

可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

可选的 callback 参数是 fading 完成后所执行的函数名称。

下面的例子演示了带有不同参数的 fadeOut() 方法:


实例

$("button").click(function(){

$("#div1").fadeOut();

$("#div2").fadeOut("slow");

$("#div3").fadeOut(3000);

});

尝试一下
»

jQuery fadeToggle() 方法

jQuery fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。

如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。

如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。

语法:

$(selector).fadeToggle(speed,callback);

可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

可选的 callback 参数是 fading 完成后所执行的函数名称。

下面的例子演示了带有不同参数的 fadeToggle() 方法:


实例

$("button").click(function(){

$("#div1").fadeToggle();

$("#div2").fadeToggle("slow");

$("#div3").fadeToggle(3000);

});

尝试一下
»

jQuery fadeTo() 方法

jQuery fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。

语法:

$(selector).fadeTo(speed,opacity,callback);

必需的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。

可选的 callback 参数是该函数完成后所执行的函数名称。

下面的例子演示了带有不同参数的 fadeTo() 方法:


实例

$("button").click(function(){

$("#div1").fadeTo("slow",0.15);

$("#div2").fadeTo("slow",0.4);

$("#div3").fadeTo("slow",0.7);

});

尝试一下
»


jQuery 效果 - 滑动

jQuery 滑动方法可使元素上下滑动。

点击这里,隐藏/显示面板


实例

jQuery slideDown()

演示 jQuery slideDown() 方法。

jQuery slideUp()

演示 jQuery slideUp() 方法。

jQuery slideToggle()
演示 jQuery slideToggle() 方法。

默认情况下,所有的 HTML 元素有一个静态的位置,且是不可移动的。 如果需要改变为,我们需要将元素的 position 属性设置为 relative, fixed, 或 absolute!


jQuery 停止动画

jQuery stop() 方法用于在动画或效果完成前对它们进行停止。

点击这里,向上/向下滑动面板

时间是宝贵的,因此,我们为您提供快捷易懂的学习内容。

在这里,您可以通过一种易懂的便利的模式获得您需要的任何知识。


实例

jQuery stop() 滑动

演示 jQuery stop() 方法。

jQuery stop() 动画(带参数)
演示 jQuery stop() 方法


jQuery Callback 方法

Callback 函数在当前动画 100% 完成之后执行。


jQuery 动画的问题

许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration(持续时间) 作为可选参数。

例子:$("p").hide("slow")

speed 或 duration 参数可以设置许多不同的值,比如 "slow", "fast", "normal" 或毫秒。

实例

以下实例在隐藏效果完全实现后回调函数:


使用 callback 实例

$("button").click(function(){
$("p").hide("slow",function(){
alert("The
paragraph is now hidden");
});
});

尝试一下

以下实例没有回调函数,警告框会在隐藏效果完成前弹出:


没有 callback(回调)

$("button").click(function(){
$("p").hide(1000);
alert("The
paragraph is now hidden");
});

在线实例
»


jQuery - Chaining

通过 jQuery,可以把动作/方法链接在一起。

Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上)。


jQuery 方法链接

直到现在,我们都是一次写一条 jQuery 语句(一条接着另一条)。

不过,有一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条 jQuery 命令,一条接着另一条。

提示: 这样的话,浏览器就不必多次查找相同的元素。

如需链接一个动作,您只需简单地把该动作追加到之前的动作上。

下面的例子把 css()、slideUp() 和 slideDown() 链接在一起。"p1" 元素首先会变为红色,然后向上滑动,再然后向下滑动:


实例

$("#p1").css("color","red").slideUp(2000).slideDown(2000);

尝试一下
»

如果需要,我们也可以添加多个方法调用。

提示:当进行链接时,代码行会变得很差。不过,jQuery 语法不是很严格;您可以按照希望的格式来写,包含换行和缩进。

如下书写也可以很好地运行:


实例

$("#p1").css("color","red")

.slideUp(2000)

.slideDown(2000);

尝试一下
»

jQuery 会抛掉多余的空格,并当成一行长代码来执行上面的代码行。


jQuery 事件 方法


jQuery 事件方法

事件方法触发器或添加一个函数到被选元素的事件处理程序。

下面的表格列出了所有用于处理事件的 jQuery 方法。
方法描述
bind()向元素添加事件处理程序
blur()添加/触发失去焦点事件
change()添加/触发 change 事件
click()添加/触发 click 事件
dblclick()添加/触发 double click 事件
delegate()向匹配元素的当前或未来的子元素添加处理程序
die()在版本 1.9 中被移除。移除所有通过 live() 方法添加的事件处理程序
error()在版本 1.8 中被废弃。添加/触发 error 事件
event.currentTarget在事件冒泡阶段内的当前 DOM 元素
event.data包含当前执行的处理程序被绑定时传递到事件方法的可选数据
event.delegateTarget返回当前调用的 jQuery 事件处理程序所添加的元素
event.isDefaultPrevented()返回指定的 event 对象上是否调用了 event.preventDefault()
event.isImmediatePropagationStopped()返回指定的 event 对象上是否调用了 event.stopImmediatePropagation()
event.isPropagationStopped()返回指定的 event 对象上是否调用了 event.stopPropagation()
event.namespace返回当事件被触发时指定的命名空间
event.pageX返回相对于文档左边缘的鼠标位置
event.pageY返回相对于文档上边缘的鼠标位置
event.preventDefault()阻止事件的默认行为
event.relatedTarget返回当鼠标移动时哪个元素进入或退出
event.result包含由被指定事件触发的事件处理程序返回的最后一个值
event.stopImmediatePropagation()阻止其他事件处理程序被调用
event.stopPropagation()阻止事件向上冒泡到 DOM 树,阻止任何父处理程序被事件通知
event.target返回哪个 DOM 元素触发事件
event.timeStamp返回从 1970 年 1 月 1 日到事件被触发时的毫秒数
event.type返回哪种事件类型被触发
event.which返回指定事件上哪个键盘键或鼠标按钮被按下
event.metaKey事件触发时 META 键是否被按下
focus()添加/触发 focus 事件
focusin()添加事件处理程序到 focusin 事件
focusout()添加事件处理程序到 focusout 事件
hover()添加两个事件处理程序到 hover 事件
keydown()添加/触发 keydown 事件
keypress()添加/触发 keypress 事件
keyup()添加/触发 keyup 事件
live()在版本 1.9 中被移除。添加一个或多个事件处理程序到当前或未来的被选元素
load()在版本 1.8 中被废弃。添加一个事件处理程序到 load 事件
mousedown()添加/触发 mousedown 事件
mouseenter()添加/触发 mouseenter 事件
mouseleave()添加/触发 mouseleave 事件
mousemove()添加/触发 mousemove 事件
mouseout()添加/触发 mouseout 事件
mouseover()添加/触发 mouseover 事件
mouseup()添加/触发 mouseup 事件
off()移除通过 on() 方法添加的事件处理程序
on()向元素添加事件处理程序
one()向被选元素添加一个或多个事件处理程序。该处理程序只能被每个元素触发一次
$.proxy()接受一个已有的函数,并返回一个带特定上下文的新的函数
ready()规定当 DOM 完全加载时要执行的函数
resize()添加/触发 resize 事件
scroll()添加/触发 scroll 事件
select()添加/触发 select 事件
submit()添加/触发 submit 事件
toggle()在版本 1.9 中被移除。添加 click 事件之间要切换的两个或多个函数
trigger()触发绑定到被选元素的所有事件
triggerHandler()触发绑定到被选元素的指定事件上的所有函数
unbind()从被选元素上移除添加的事件处理程序
undelegate()从现在或未来的被选元素上移除事件处理程序
unload()在版本 1.8 中被废弃。添加事件处理程序到 unload 事件
contextmenu()添加事件处理程序到 contextmenu 事件
$.holdReady()用于暂停或恢复.ready() 事件的执行


jQuery 效果 方法


jQuery 效果方法

下面的表格列出了所有用于创建动画效果的 jQuery 方法。
方法描述
animate()对被选元素应用"自定义"的动画
clearQueue()对被选元素移除所有排队函数(仍未运行的)
delay()对被选元素的所有排队函数(仍未运行)设置延迟
dequeue()移除下一个排队函数,然后执行函数
fadeIn()逐渐改变被选元素的不透明度,从隐藏到可见
fadeOut()逐渐改变被选元素的不透明度,从可见到隐藏
fadeTo()把被选元素逐渐改变至给定的不透明度
fadeToggle()在 fadeIn() 和 fadeOut() 方法之间进行切换
finish()对被选元素停止、移除并完成所有排队动画
hide()隐藏被选元素
queue()显示被选元素的排队函数
show()显示被选元素
slideDown()通过调整高度来滑动显示被选元素
slideToggle()slideUp() 和 slideDown() 方法之间的切换
slideUp()通过调整高度来滑动隐藏被选元素
stop()停止被选元素上当前正在运行的动画
toggle()hide() 和 show() 方法之间的切换


jQuery HTML / CSS 方法

下面的表格列出了所有用于处理 HTML 和 CSS 的 jQuery 方法。

下面的方法适用于 HTML 和 XML 文档。除了:html() 方法。
方法描述
addClass()向被选元素添加一个或多个类名
after()在被选元素后插入内容
append()在被选元素的结尾插入内容
appendTo()在被选元素的结尾插入 HTML 元素
attr()设置或返回被选元素的属性/值
before()在被选元素前插入内容
clone()生成被选元素的副本
css()为被选元素设置或返回一个或多个样式属性
detach()移除被选元素(保留数据和事件)
empty()从被选元素移除所有子节点和内容
hasClass()检查被选元素是否包含指定的 class 名称
height()设置或返回被选元素的高度
html()设置或返回被选元素的内容
innerHeight()返回元素的高度(包含 padding,不包含 border)
innerWidth()返回元素的宽度(包含 padding,不包含 border)
insertAfter()在被选元素后插入 HTML 元素
insertBefore()在被选元素前插入 HTML 元素
offset()设置或返回被选元素的偏移坐标(相对于文档)
offsetParent()返回第一个定位的祖先元素
outerHeight()返回元素的高度(包含 padding 和 border)
outerWidth()返回元素的宽度(包含 padding 和 border)
position()返回元素的位置(相对于父元素)
prepend()在被选元素的开头插入内容
prependTo()在被选元素的开头插入 HTML 元素
prop()设置或返回被选元素的属性/值
remove()移除被选元素(包含数据和事件)
removeAttr()从被选元素移除一个或多个属性
removeClass()从被选元素移除一个或多个类
removeProp()移除通过 prop() 方法设置的属性
replaceAll()把被选元素替换为新的 HTML 元素
replaceWith()把被选元素替换为新的内容
scrollLeft()设置或返回被选元素的水平滚动条位置
scrollTop()设置或返回被选元素的垂直滚动条位置
text()设置或返回被选元素的文本内容
toggleClass()在被选元素中添加/移除一个或多个类之间切换
unwrap()移除被选元素的父元素
val()设置或返回被选元素的属性值(针对表单元素)
width()设置或返回被选元素的宽度
wrap()在每个被选元素的周围用 HTML 元素包裹起来
wrapAll()在所有被选元素的周围用 HTML 元素包裹起来
wrapInner()在每个被选元素的内容周围用 HTML 元素包裹起来
$.escapeSelector()转义CSS选择器中有特殊意义的字符或字符串
$.cssHooks提供了一种方法通过定义函数来获取和设置特定的CSS值


Query - 设置内容和属性


设置内容 - text()、html() 以及 val()

我们将使用前一章中的三个相同的方法来设置内容:

text() - 设置或返回所选元素的文本内容

html() - 设置或返回所选元素的内容(包括 HTML 标记)

val() - 设置或返回表单字段的值

下面的例子演示如何通过 text()、html() 以及 val() 方法来设置内容:


实例

$("#btn1").click(function(){
$("#test1").text("Hello
world!");
}); $("#btn2").click(function(){
$("#test2").html("<b>Hello
world!</b>");
}); $("#btn3").click(function(){
$("#test3").val("RUNOOB");
});

尝试一下
»


text()、html() 以及 val() 的回调函数

上面的三个 jQuery 方法:text()、html() 以及 val(),同样拥有回调函数。回调函数由两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。

下面的例子演示带有回调函数的 text() 和 html():


实例

$("#btn1").click(function(){
$("#test1").text(function(i,origText){
return
"旧文本:
"
+ origText
+
"
新文本: Hello world! (index:
" +
i +
")";
});
}); $("#btn2").click(function(){
$("#test2").html(function(i,origText){
return
"旧 html:
"
+ origText
+
"
新 html: Hello <b>world!</b> (index:
" +
i +
")";
});
});

尝试一下
»


设置属性 - attr()

jQuery attr() 方法也用于设置/改变属性值。

下面的例子演示如何改变(设置)链接中 href 属性的值:


实例

$("button").click(function(){
$("#runoob").attr("href","http://www.runoob.com/jquery");
});

尝试一下
»

attr() 方法也允许您同时设置多个属性。

下面的例子演示如何同时设置 href 和 title 属性:


实例

$("button").click(function(){
$("#runoob").attr({
"href"
:
"http://www.runoob.com/jquery",
"title"
:
"jQuery 教程"
});
});

尝试一下
»


attr() 的回调函数

jQuery 方法 attr(),也提供回调函数。回调函数由两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。

下面的例子演示带有回调函数的 attr() 方法:


实例

$("button").click(function(){
$("#runoob").attr("href",
function(i,origValue){
return
origValue +
"/jquery";
});
});

尝试一下
»


jQuery - 添加元素

通过 jQuery,可以很容易地添加新元素/内容。


添加新的 HTML 内容

我们将学习用于添加新内容的四个 jQuery 方法:

append() - 在被选元素的结尾插入内容

prepend() - 在被选元素的开头插入内容

after() - 在被选元素之后插入内容

before() - 在被选元素之前插入内容


jQuery append() 方法

jQuery append() 方法在被选元素的结尾插入内容。


实例

$("p").append("追加文本");

尝试一下
»


jQuery prepend() 方法

jQuery prepend() 方法在被选元素的开头插入内容。


实例

$("p").prepend("在开头追加文本");

尝试一下
»


通过 append() 和 prepend() 方法添加若干新元素

在上面的例子中,我们只在被选元素的开头/结尾插入文本/HTML。

不过,append() 和 prepend() 方法能够通过参数接收无限数量的新元素。可以通过 jQuery 来生成文本/HTML(就像上面的例子那样),或者通过 JavaScript 代码和 DOM 元素。

在下面的例子中,我们创建若干个新元素。这些元素可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建。然后我们通过 append() 方法把这些新元素追加到文本中(对 prepend() 同样有效):


实例

function
appendText(){
var
txt1="<p>文本。</p>";
//
使用 HTML 标签创建文本
var
txt2=$("<p></p>").text("文本。");
//
使用 jQuery 创建文本
var
txt3=document.createElement("p");
txt3.innerHTML="文本。";
//
使用 DOM 创建文本 text with DOM
$("body").append(txt1,txt2,txt3);
//
追加新元素}

尝试一下
»


jQuery after() 和 before() 方法

jQuery after() 方法在被选元素之后插入内容。

jQuery before() 方法在被选元素之前插入内容。


实例

$("img").after("在后面添加文本");
$("img").before("在前面添加文本");

尝试一下
»


通过 after() 和 before() 方法添加若干新元素

after() 和 before() 方法能够通过参数接收无限数量的新元素。可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建新元素。

在下面的例子中,我们创建若干新元素。这些元素可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建。然后我们通过 after() 方法把这些新元素插到文本中(对 before() 同样有效):


实例

function
afterText(){
var
txt1="<b>I </b>";
//
使用 HTML 创建元素
var
txt2=$("<i></i>").text("love
");
//
使用 jQuery 创建元素
var
txt3=document.createElement("big");
//
使用 DOM 创建元素
txt3.innerHTML="jQuery!";
$("img").after(txt1,txt2,txt3);
//
在图片后添加文本}

尝试一下
»


jQuery - 删除元素

通过 jQuery,可以很容易地删除已有的 HTML 元素。


删除元素/内容

如需删除元素和内容,一般可使用以下两个 jQuery 方法:

remove() - 删除被选元素(及其子元素)

empty() - 从被选元素中删除子元素


jQuery remove() 方法

jQuery remove() 方法删除被选元素及其子元素。


实例

$("#div1").remove();

尝试一下
»


jQuery empty() 方法

jQuery empty() 方法删除被选元素的子元素。


实例

$("#div1").empty();

尝试一下
»


过滤被删除的元素

jQuery remove() 方法也可接受一个参数,允许您对被删元素进行过滤。

该参数可以是任何 jQuery 选择器的语法。

下面的例子删除 class="italic" 的所有 <p> 元素:


实例

$("p").remove(".italic");

尝试一下
»


jQuery - 获取并设置 CSS 类

通过 jQuery,可以很容易地对 CSS 元素进行操作。


jQuery 操作 CSS

jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些:

addClass() - 向被选元素添加一个或多个类

removeClass() - 从被选元素删除一个或多个类

toggleClass() - 对被选元素进行添加/删除类的切换操作

css() - 设置或返回样式属性


实例样式表

下面的样式表将用于本页的所有例子:

.important

{

font-weight:bold;

font-size:xx-large;

}

.blue

{

color:blue;

}


jQuery addClass() 方法

下面的例子展示如何向不同的元素添加 class 属性。当然,在添加类时,您也可以选取多个元素:


实例

$("button").click(function(){

$("h1,h2,p").addClass("blue");

$("div").addClass("important");

});

尝试一下
»

您也可以在 addClass() 方法中规定多个类:


实例

$("button").click(function(){

$("#div1").addClass("important blue");

});

尝试一下
»


jQuery removeClass() 方法

下面的例子演示如何在不同的元素中删除指定的 class 属性:


实例

$("button").click(function(){

$("h1,h2,p").removeClass("blue");

});

尝试一下
»


jQuery toggleClass() 方法

下面的例子将展示如何使用 jQuery toggleClass() 方法。该方法对被选元素进行添加/删除类的切换操作:


实例

$("button").click(function(){

$("h1,h2,p").toggleClass("blue");

});

尝试一下
»


jQuery css() 方法

css() 方法设置或返回被选元素的一个或多个样式属性。


返回 CSS 属性

如需返回指定的 CSS 属性的值,请使用如下语法:

css("propertyname");

下面的例子将返回首个匹配元素的 background-color 值:


实例

$("p").css("background-color");

尝试一下
»


设置 CSS 属性

如需设置指定的 CSS 属性,请使用如下语法:

css("propertyname","value");

下面的例子将为所有匹配元素设置 background-color 值:


实例

$("p").css("background-color","yellow");

尝试一下
»


设置多个 CSS 属性

如需设置多个 CSS 属性,请使用如下语法:

css({"propertyname":"value","propertyname":"value",...});

下面的例子将为所有匹配元素设置 background-color 和 font-size:


实例

$("p").css({"background-color":"yellow","font-size":"200%"});

尝试一下
»

通过 jQuery,很容易处理元素和浏览器窗口的尺寸。


jQuery 尺寸方法

jQuery 提供多个处理尺寸的重要方法:

width()

height()

innerWidth()

innerHeight()

outerWidth()

outerHeight()


jQuery 尺寸




jQuery width() 和 height() 方法

width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。

height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。

下面的例子返回指定的 <div> 元素的宽度和高度:


实例

$("button").click(function(){

var txt="";

txt+="Width: " + $("#div1").width() + "</br>";

txt+="Height: " + $("#div1").height();

$("#div1").html(txt);

});

尝试一下
»


jQuery innerWidth() 和 innerHeight() 方法

innerWidth() 方法返回元素的宽度(包括内边距)。

innerHeight() 方法返回元素的高度(包括内边距)。

下面的例子返回指定的 <div> 元素的 inner-width/height:


实例

$("button").click(function(){

var txt="";

txt+="Inner width: " + $("#div1").innerWidth() + "</br>";

txt+="Inner height: " + $("#div1").innerHeight();

$("#div1").html(txt);

});

尝试一下
»


jQuery outerWidth() 和 outerHeight() 方法

outerWidth() 方法返回元素的宽度(包括内边距和边框)。

outerHeight() 方法返回元素的高度(包括内边距和边框)。

下面的例子返回指定的 <div> 元素的 outer-width/height:


实例

$("button").click(function(){

var txt="";

txt+="Outer width: " + $("#div1").outerWidth() + "</br>";

txt+="Outer height: " + $("#div1").outerHeight();

$("#div1").html(txt);

});

尝试一下


jQuery 遍历


什么是遍历?

jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止。

下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。



图示解析:

<div> 元素是 <ul> 的父元素,同时是其中所有内容的祖先。

<ul> 元素是 <li> 元素的父元素,同时是 <div> 的子元素

左边的 <li> 元素是 <span> 的父元素,<ul> 的子元素,同时是 <div> 的后代。

<span> 元素是 <li> 的子元素,同时是 <ul> 和 <div> 的后代。

两个 <li> 元素是同胞(拥有相同的父元素)。

右边的 <li> 元素是 <b> 的父元素,<ul> 的子元素,同时是 <div> 的后代。

<b> 元素是右边的 <li> 的子元素,同时是 <ul> 和 <div> 的后代。


祖先是父、祖父、曾祖父等等。后代是子、孙、曾孙等等。同胞拥有相同的父。


遍历 DOM

jQuery 提供了多种遍历 DOM 的方法。

遍历方法中最大的种类是树遍历(tree-traversal)。

下一章会讲解如何在 DOM 树中向上、下以及同级移动。


jQuery 遍历 - 后代

后代是子、孙、曾孙等等。

通过 jQuery,您能够向下遍历 DOM 树,以查找元素的后代。

向下遍历 DOM 树

下面是两个用于向下遍历 DOM 树的 jQuery 方法:

children()

find()

jQuery children() 方法

children() 方法返回被选元素的所有直接子元素。

该方法只会向下一级对 DOM 树进行遍历。

下面的例子返回每个 <div> 元素的所有直接子元素:


实例

$(document).ready(function(){

$("div").children();

});

尝试一下
»

您也可以使用可选参数来过滤对子元素的搜索。

下面的例子返回类名为 "1" 的所有 <p> 元素,并且它们是 <div> 的直接子元素:


实例

$(document).ready(function(){

$("div").children("p.1");

});

尝试一下
»

jQuery find() 方法

find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。

下面的例子返回属于 <div> 后代的所有 <span> 元素:


实例

$(document).ready(function(){

$("div").find("span");

});

尝试一下
»

下面的例子返回 <div> 的所有后代:


实例

$(document).ready(function(){

$("div").find("*");

});

尝试一下
»


jQuery 遍历 - 同胞(siblings)

同胞拥有相同的父元素。

通过 jQuery,您能够在 DOM 树中遍历元素的同胞元素。


在 DOM 树中水平遍历

有许多有用的方法让我们在 DOM 树进行水平遍历:

siblings()

next()

nextAll()

nextUntil()

prev()

prevAll()

prevUntil()


jQuery siblings() 方法

siblings() 方法返回被选元素的所有同胞元素。

下面的例子返回 <h2> 的所有同胞元素:


实例

$(document).ready(function(){
$("h2").siblings();
});

尝试一下
»

您也可以使用可选参数来过滤对同胞元素的搜索。

下面的例子返回属于 <h2> 的同胞元素的所有 <p> 元素:


实例

$(document).ready(function(){
$("h2").siblings("p");
});

尝试一下
»


jQuery next() 方法

next() 方法返回被选元素的下一个同胞元素。

该方法只返回一个元素。

下面的例子返回 <h2> 的下一个同胞元素:


实例

$(document).ready(function(){
$("h2").next();
});

尝试一下
»


jQuery nextAll() 方法

nextAll() 方法返回被选元素的所有跟随的同胞元素。

下面的例子返回 <h2> 的所有跟随的同胞元素:


实例

$(document).ready(function(){
$("h2").nextAll();
});

尝试一下
»


jQuery nextUntil() 方法

nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。

下面的例子返回介于 <h2> 与 <h6> 元素之间的所有同胞元素:


实例

$(document).ready(function(){
$("h2").nextUntil("h6");
});

尝试一下
»


jQuery prev(), prevAll() & prevUntil() 方法

prev(), prevAll() 以及 prevUntil() 方法的工作方式与上面的方法类似,只不过方向相反而已:它们返回的是前面的同胞元素(在 DOM 树中沿着同胞元素向后遍历,而不是向前)。


jQuery 遍历- 过滤


缩写搜索元素的范围

三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素。

其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。


jQuery first() 方法

first() 方法返回被选元素的首个元素。

下面的例子选取首个 <div> 元素内部的第一个 <p> 元素:


实例

$(document).ready(function(){

$("div p").first();

});

尝试一下
»


jQuery last() 方法

last() 方法返回被选元素的最后一个元素。

下面的例子选择最后一个 <div> 元素中的最后一个 <p> 元素:


实例

$(document).ready(function(){

$("div p").last();

});

尝试一下
»


jQuery eq() 方法

eq() 方法返回被选元素中带有指定索引号的元素。

索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。下面的例子选取第二个 <p> 元素(索引号 1):


实例

$(document).ready(function(){

$("p").eq(1);

});

尝试一下
»


jQuery filter() 方法

filter() 方法允许您规定一个标准。不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回。

下面的例子返回带有类名 "url" 的所有 <p> 元素:


实例

$(document).ready(function(){

$("p").filter(".url");

});

尝试一下
»


jQuery not() 方法

not() 方法返回不匹配标准的所有元素。

提示:not() 方法与 filter() 相反。

下面的例子返回不带有类名 "url" 的所有 <p> 元素:


实例

$(document).ready(function(){

$("p").not(".url");

});

尝试一下
»


AJAX ASP/PHP 实例

AJAX 用于创造动态性更强的应用程序。


AJAX ASP/PHP 实例

下面的例子将为您演示当用户在输入框中键入字符时,网页如何与 web 服务器进行通信: 请在下面的输入框中键入字母(A - Z):


实例

在输入框中尝试输入字母 a:
输入姓名:

提示信息: Violet , Vicky

尝试一下
»


实例解析 - showHint() 函数

当用户在上面的输入框中键入字符时,会执行函数 "showHint()" 。该函数由 "onkeyup" 事件触发:

function
showHint(str){
var
xmlhttp;
if
(str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
//
IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new
XMLHttpRequest();
}
else {
//
IE6, IE5 浏览器执行代码
xmlhttp=new
ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4
&&
xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
} xmlhttp.open("GET","/try/ajax/gethint.php?q="+str,true);
xmlhttp.send();
}

源代码解析:

如果输入框为空 (str.length==0),则该函数清空 txtHint 占位符的内容,并退出函数。

如果输入框不为空,showHint() 函数执行以下任务:

创建 XMLHttpRequest 对象

当服务器响应就绪时执行函数

把请求发送到服务器上的文件

请注意我们向 URL 添加了一个参数 q (带有输入框的内容)


AJAX 服务器页面 - ASP 和 PHP

由上面的 JavaScript 调用的服务器页面是 ASP 文件,名为 "gethint.asp"。

下面,我们创建了两个版本的服务器文件,一个用 ASP 编写,另一个用 PHP 编写。


ASP 文件

"gethint.asp" 中的源代码会检查一个名字数组,然后向浏览器返回相应的名字:
<%
response.expires=-1
dim a(30)'Fill up array with names
a(1)="Anna"
a(2)="Brittany"
a(3)="Cinderella"
a(4)="Diana"
a(5)="Eva"
a(6)="Fiona"
a(7)="Gunda"
a(8)="Hege"
a(9)="Inga"
a(10)="Johanna"
a(11)="Kitty"
a(12)="Linda"
a(13)="Nina"
a(14)="Ophelia"
a(15)="Petunia"
a(16)="Amanda"
a(17)="Raquel"
a(18)="Cindy"
a(19)="Doris"
a(20)="Eve"
a(21)="Evita"
a(22)="Sunniva"
a(23)="Tove"
a(24)="Unni"
a(25)="Violet"
a(26)="Liza"
a(27)="Elizabeth"
a(28)="Ellen"
a(29)="Wenche"
a(30)="Vicky"

'get the q parameter from URL
q=ucase(request.querystring("q"))

'lookup all hints from array if length of q>0
if len(q)>0 then
hint=""
for i=1 to 30
if q=ucase(mid(a(i),1,len(q))) then
if hint="" then
hint=a(i)
else
hint=hint & " , " & a(i)
end if
end if
next
end if

'Output "no suggestion" if no hint were found
'or output the correct values
if hint="" then
response.write("no suggestion")
else
response.write(hint)
end if
%>



AJAX Database 实例

AJAX 可用来与数据库进行动态通信。


AJAX 数据库实例

下面的例子将演示网页如何通过 AJAX 从数据库读取信息: 请在下面的下拉列表中选择一个客户:


实例

CustomerIDBAIDU
CompanyNameBAIDU, Inc
ContactNameLi YanHong
AddressLixiang guoji dasha,No 58, beisihuanxilu
CityBeijing
PostalCode100080
CountryChina
尝试一下
»


实例解释 - showCustomer() 函数

当用户在上面的下拉列表中选择某个客户时,会执行名为 "showCustomer()" 的函数。该函数由 "onchange" 事件触发:

function
showCustomer(str){
var
xmlhttp;
if
(str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
//
IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new
XMLHttpRequest();
}
else {
//
IE6, IE5 浏览器执行代码
xmlhttp=new
ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4
&&
xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
} xmlhttp.open("GET","/try/ajax/getcustomer.php?q="+str,true);
xmlhttp.send();
}

showCustomer() 函数执行以下任务:

检查是否已选择某个客户

创建 XMLHttpRequest 对象

当服务器响应就绪时执行所创建的函数

把请求发送到服务器上的文件

请注意我们向 URL 添加了一个参数 q (带有输入域中的内容)


AJAX 服务器页面

由上面的 JavaScript 调用的服务器页面是 PHP 文件,名为 "getcustomer.php"。

用 PHP 编写服务器文件也很容易,或者用其他服务器语言。请看用 PHP 编写的相应的例子

"getcustomer.php" 中的源代码负责对数据库进行查询,然后用 HTML 表格返回结果:

<%

response.expires=-1

sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="

sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("/db/northwind.mdb"))set rs=Server.CreateObject("ADODB.recordset")

rs.Open sql,conn

response.write("<table>")do until rs.EOF

for each x in rs.Fields

response.write("<tr><td><b>" & x.name & "</b></td>")

response.write("<td>" & x.value & "</td></tr>")

next

rs.MoveNext

loop

response.write("</table>")

%>


jQuery load() 方法

jQuery load() 方法是简单但强大的 AJAX 方法。

load() 方法从服务器加载数据,并把返回的数据放入被选元素中。

语法:

$(selector).load(URL,data,callback);

必需的 URL 参数规定您希望加载的 URL。

可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。

可选的 callback 参数是 load() 方法完成后所执行的函数名称。

这是示例文件("demo_test.txt")的内容:

<h2>jQuery
AJAX 是个非常棒的功能!</h2><p
id="p1">这是段落的一些文本。</p>

下面的例子会把文件 "demo_test.txt" 的内容加载到指定的 <div> 元素中:


实例

$("#div1").load("demo_test.txt");

尝试一下
»

也可以把 jQuery 选择器添加到 URL 参数。

下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容,加载到指定的 <div> 元素中:


实例

$("#div1").load("demo_test.txt
#p1");

尝试一下
»

可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数:

responseTxt - 包含调用成功时的结果内容

statusTXT - 包含调用的状态

xhr - 包含 XMLHttpRequest 对象

下面的例子会在 load() 方法完成后显示一个提示框。如果 load() 方法已成功,则显示"外部内容加载成功!",而如果失败,则显示错误消息:


实例

$("button").click(function(){
$("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){
if(statusTxt=="success")
alert("外部内容加载成功!");
if(statusTxt=="error")
alert("Error:
"+xhr.status+":
"+xhr.statusText);
});
});

尝试一下
»


异步 - True 或 False?

AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。

XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true:

xmlhttp.open("GET","ajax_test.html",true);

对于 web 开发人员来说,发送异步请求是一个巨大的进步。很多在服务器执行的任务都相当费时。AJAX 出现之前,这可能会引起应用程序挂起或停止。

通过 AJAX,JavaScript 无需等待服务器的响应,而是:

在等待服务器响应时执行其他脚本

当响应就绪后对响应进行处理


Async=true

当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:


实例

xmlhttp.onreadystatechange=function(){
if
(xmlhttp.readyState==4
&&
xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}}xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
xmlhttp.send();

尝试一下
»

您将在稍后的章节学习更多有关 onreadystatechange 的内容。


Async = false

如需使用 async=false,请将 open() 方法中的第三个参数改为 false:
xmlhttp.open("GET","test1.txt",false);


我们不推荐使用 async=false,但是对于一些小型的请求,也是可以的。

请记住,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。

注意:当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可:


实例

xmlhttp.open("GET","/try/ajax/ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

尝试一下
»


AJAX - 服务器 响应


服务器响应

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性描述
responseText获得字符串形式的响应数据。
responseXML获得 XML 形式的响应数据。


responseText 属性

如果来自服务器的响应并非 XML,请使用 responseText 属性。

responseText 属性返回字符串形式的响应,因此您可以这样使用:


实例

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

尝试一下
»


responseXML 属性

如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:


实例

请求 cd_catalog.xml 文件,并解析响应:

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for
(i=0;i<x.length;i++){
txt=txt
+
x[i].childNodes[0].nodeValue
+
"<br>";
}document.getElementById("myDiv").innerHTML=txt;

尝试一下
»


AJAX 实例



AJAX 实例

一个简单的AJAX实例

创建一个简单的XMLHttpRequest,从一个TXT文件中返回数据。

用AJAX加载 XML 文件

创建一个简单的XMLHttpRequest,从一个XML文件中返回数据。

用AJAX进行一次 HEAD 请求

检索资源(文件)的头信息。

用AJAX进行一次指定的 HEAD 请求

检索资源(文件)的指定头信息。

用AJAX从ASP 文件返回数据

当用户在文本框内键入字符时网页如何与Web服务器进行通信

用AJAX从数据库返回数据

用AJAX网页如何获取数据库中的信息

用AJAX从XML 文件返回数据

创建一个XMLHttpRequest从XML文件中检索数据并显示在一个HTML表格中。

用callback函数的AJAX实例

用一个callback函数创建一个XMLHttpRequest,并从一个TXT文件中检索数据。

AJAX下拉联动


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Jquery ajax