jQuery操作DOM元素
使用attr()
方法控制元素的属性
attr()
方法的作用是设置或者返回元素的属性,其中attr(属性名)
格式是获取元素属性名的值,attr(属性名,属性值)
格式则是设置元素属性名的值。
例如,使用attr(属性名)
的格式获取页面中<a>
元素的“href”
属性值,并将该值的内容显示在<span>
元素中,如下图所示:
在浏览器中显示的效果:
<h3>attr()方法获取元素属性</h3>
<a href="http://127.0.0.1" id="a1">点我就走</a>
<div>我要去的地方是:<span id="tip"></span></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
var $url=$("#a1").attr("href");
$("#tip").html($url);
</script>
从图中可以看出,通过attr()方法可以方便地获取元素中指定属性名称的内容,并将获取的内容通过html()方法显示在页面中。
Alt text
操作元素的内容
使用html()
和text()
方法操作元素的内容,当两个方法的参数为空时,表示获取该元素的内容,而如果方法中包含参数,则表示将参数值设置为元素内容。
例如,分别使用html()
和text()
方法获取一个元素的内容,并将获取的内容显示在不同的<div>
元素中,如下图所示:
<h3>html()和text()方法获取元素内容</h3>
<div id="content"><i>我的身体有点歪哦</i></div>
<div id="html"></div>
<div id="text"></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
var $html=$("#content").html();
var $text=$("#content").text();
$("#html").html($html);
$("#text").text($text);
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,html()方法可以获取元素的HTML内容,因此,原文中的格式代码也被一起获取,而text()方法只是获取元素中的文本内容,并不包含HTML格式代码,所以它显示的内容并没有变“歪”。
操作元素的样式
通过addClass()
和css()
方法可以方便地操作元素中的样式,前者括号中的参数为增加元素的样式名称,后者直接将样式的属性内容写在括号中。
例如,使用addClass()
方法,改变<div>
元素的背景色和文字颜色,如下图所示:
<style type="text/css">
div
{
padding: 8px;
width: 180px;
}
.blue
{
background-color: blue;
}
.white
{
color: white;
}
</style>
</head>
<body>
<h3>addClass()方法设置元素样式</h3>
<div id="content">我穿了一件蓝色外衣</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$("#content").addClass("blue white");
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,通过addClass()
方法为<div>
元素增加了两个样式名称,从而改变了<div>
元素的背景和文字颜色,增加多个样式名称时,要用空格隔开。
css()
方法和addClass
方法用法类似,只是需要去设置具体样式了。具体用法同学们可以在下面的任务中自己尝试。
$("#content").css({"background-color":"red","color":"white"});
移除属性和样式
使用removeAttr(name)
和removeClass(class)
分别可以实现移除元素的属性和样式的功能,前者方法中参数表示移除属性名,后者方法中参数则表示移除的样式名
例如,使用removeAttr()方法移除<a>
元素中的“href”
属性,如下图所示:
<h3>attr()方法获取元素属性</h3>
<a href="http://127.0.0.1" id="a1">点我就走</a>
<div>我要去的地方是:<span id="tip"></span></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$("a").removeAttr("href")
var $url=$("#a1").attr("href");
$("#tip").html($url);
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用removeAttr()
方法移除元素的“href”
属性后,再次显示元素的“href”
属性值时,则为空值,<a>
元素中的文字也丢失可点击的效果。
使用append()
方法向元素内追加内容
append(content)方法的功能是向指定的元素中追加内容,被追加的content参数,可以是字符、HTML元素标记,还可以是一个返回字符串内容的函数。
例如,在页面的<body>元素中追加一个具有“id”、“title”属性和显示内容的<div>元素,如下图所示:
<h3>append()方法追加内容</h3>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
var P1="<p>woshishui</p>"
$("body").append(P1);
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,由于使用append()
方法在<body>
元素中追加了一些HTML 元素标记,因此追加后,这些元素标记直接生成对应的元素和属性显示在页面中。
使用appendTo()
方法向被选元素内插入内容
appendTo()
方法也可以向指定的元素内插入内容,它的使用格式是:$(content).appendTo(selector)
参数content
表示需要插入的内容,参数selector
表示被选的元素,即把content
内容插入selector
元素内,默认是在尾部。
例如,使用appendTo()
方法,将<div>
外的<span>
元素插入<div>
内,如下图所示:
<h3>appendTo()方法插入内容</h3>
<div>
<span class="green">小乌龟</span>
</div>
<span class="red">小兔子</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(".red").appendTo("div");
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用appendTo()
方法将类别名为“red”
的<span>
元素插入到<div>
元素的尾部,相当于追加的效果。
使用before()
和after()
在元素前后插入内容
使用before()
和after()
方法可以在元素的前后插入内容,它们分别表示在整个元素的前面和后面插入指定的元素或内容,调用格式分别为:
$(selector).before(content)
和$(selector).after(content)
其中参数content表示插入的内容,该内容可以是元素或HTML字符串。
例如,调用before()方法在一个<span>
元素插入另一个<span>
元素,如下图所示:
<h3>before()方法在元素之前插入内容</h3>
<span class="green">我们交个朋友吧!</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
var $html = "<span class='red'>土豪,</span>"
$(".green").before($html);
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用before()
方法将HTML格式的内容插入到原有<span>
元素内容之前,而并不仅是它的内部文本。
使用clone()
方法复制元素
调用clone()方法可以生成一个被选元素的副本,即复制了一个被选元素,包含它的节点、文本和属性,它的调用格式为:$(selector).clone()
其中参数selector
可以是一个元素或HTML
内容。
例如,使用clone()方法复制页面中的一个<span>
元素,并将复制后的元素追加到页面的后面,如下图所示:
<h3>使用clone()方法复制元素</h3>
<span class="red" title="hi">我是美猴王</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$("body").append($(".red").clone())
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用clone()方法
复制元素时,不仅复制了该元素的文本和节点,还将它的“title”属性也一起复制过来了。
replaceWith()和replaceAll()方法
都可以用于替换元素或元素中的内容,但它们调用时,内容和被替换元素所在的位置不同,分别为如下所示:
$(selector).replaceWith(content)
和$(content).replaceAll(selector)
参数selector
为被替换的元素,content
为替换的内容。
例如,调用replaceWith()方法将页面中<span>
元素替换成一段HTML字符串,如下图所示:
<h3>使用clone()方法复制元素</h3>
<span class="green" title="hi">我是屌丝</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
var $html="<span class='red' title='hi'>我是土豪</span>"
$(".green").replaceWith($html);
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用replaceWith()
方法替换类别名为“green”的<span>
元素,替换之后,旧元素完全由新替换的元素所取代。
使用wrap()
和wrapInner()
方法包裹元素和内容
wrap()
和wrapInner()
方法都可以进行元素的包裹,但前者用于包裹元素本身,后者则用于包裹元素中的内容,它们的调用格式分别为:
$(selector).wrap(wrapper)
和$(selector).wrapInner(wrapper)
参数selector为被包裹的元素,wrapper参数为包裹元素的格式。
例如,调用wrap()
方法,将<span>
用<div>
元素包裹起来,如下图所示:
<h3>用wrap()方法包裹元素</h3>
<span class="red" title="hi">我被绿丝带包围了</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(".red").wrap("<div></div>");
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,红色区域的<span>
元素被蓝色边框的<div>
元素通过wrap()
方法包裹起来。
使用each()方法遍历元素
使用each()
方法可以遍历指定的元素集合,在遍历时,通过回调函数返回遍历元素的序列号,它的调用格式为:$(selector).each(function(index))
参数function为遍历时的回调函数,index为遍历元素的序列号,它从0开始。
例如,遍历页面中的<span>
元素,当元素的序列号为2时,添加名为“focus”的样式,如下图所示:
<h3>使用each()方法遍历元素</h3>
<span class="green">香蕉</span>
<span class="green">桃子</span>
<span class="green">葡萄</span>
<span class="green">荔枝</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$("span").each(function(index) {
if (index==2) {
$(this).addClass("focus");
}
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,在使用each()方法遍历<span>
元素时,回调函数中的“index”参数为元素的序列号,它从0开始,当为2时,表示第3个<span>
元素增加样式。
使用remove()
和empty()
方法删除元素
remove()
方法删除所选元素本身和子元素,该方法可以通过添加过滤参数指定需要删除的某些元素,而empty()
方法则只删除所选元素的子元素。
例如,调用remove()
方法删除<span>
元素中类别名为“red”的,如下图所示:
<h3>使用each()方法遍历元素</h3>
<span class="green">香蕉</span>
<span class="red">桃子</span>
<span class="green">葡萄</span>
<span class="red">荔枝</span>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$("span").remove(".red");
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用remove(".red")
方法只是把<span>
元素中类别名为“red”的这部分元素给删除了。
jQuery事件与应用
页面加载时触发ready()事件
ready()
事件类似于onLoad()
事件,但前者只要页面的DOM结构加载后便触发,而后者必须在页面全部元素加载成功才触发,ready()
可以写多个,按顺序执行。此外,下列写法是相等的:$(document).ready(function(){})
等价于$(function(){})
;
例如,当触发页面的ready()事件时,在<div>
元素中显示一句话。如下图所示:
<h3>页面载入时触发ready()事件</h3>
<div id="tip"></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("#tip").html("我被加载了!");
})
在浏览器中显示的效果:
Alt text
从图中可以看出,当页面的DOM框架完成加载后,便触发ready()
事件,在该事件中,通过id
号为“tip”
的元素,调用html()
方法在页面中显示一段字符。
使用bind()
方法绑定元素的事件
bind()
方法绑定元素的事件非常方便,绑定前,需要知道被绑定的元素名,绑定的事件名称,事件中执行的函数内容就可以,它的绑定格式如下:$(selector).bind(event,[data] function)
参数event
为事件名称,多个事件名称用空格隔开,function
为事件执行的函数。
例如,绑定按钮的单击事件,单击按钮时,该按钮变为不可用。如下图所示:
<h3>bind()方法绑定单个事件</h3>
<input id="btntest" type="button" value="点击就不可用了"/>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btntest").bind("click",function(){
$(this).attr("disabled","true");
})
})
</script>
在浏览器中显示的效果:
Alt text
可以看出,由于使用bind()
方法,绑定了按钮的单击事件,在该事件中将按钮本身的“disabled”
属性值设为“true”
,表示不可用,当点击时触该事件。
使用hover()
方法切换事件
hover()方法的功能是当鼠标移到所选元素上时,执行方法中的第一个函数,鼠标移出时,执行方法中的第二个函数,实现事件的切实效果,调用格式如下:$(selector).hover(over,out);
over
参数为移到所选元素上触发的函数,out
参数为移出元素时触发的函数。
例如,当鼠标移到<div>
元素上时,元素中的字体变成金黄色,如下图所示:
<body>
<h3>hover()方法切换事件</h3>
<div>别走!你就是土豪</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("div").hover(
function(){
$(this).addClass("orange")
},
function(){
$(this).removeClass("orange")
}
);
})
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,使用hover()
方法执行两个函数,当鼠标移在元素上时调用addClass()
方法增加一个样式,移出时,调用removeClass()
方法移除该样式。
使用toggle()
方法绑定多个函数
toggle()
方法可以在元素的click事件中绑定两个或两个以上的函数,同时,它还可以实现元素的隐藏与显示的切换,绑定多个函数的调用格式如下:$(selector).toggle(fun1(),fun2(),funN(),...)
其中,fun1
,fun2
就是多个函数的名称
例如,使用toggle()
方法,当每次点击<div>
元素时,显示不同内容,如下图所示:
<h3>toggle()方法绑定多个函数</h3>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("div").toggle(
function(){
$(this).html("苹果");
}),
function(){
$(this).html("荔枝"),
}
function(){
$(this).html("香蕉"),
}
})
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,每次点击<div>
元素时,都依次执行toggle()方法绑定的函数,当执行到最后一个函数时,再次点击将又返回执行第一个函数。
注意:toggle()
方法支持目前主流稳定的jQuery版本1.8.2,在1.9.0之后的版本是不支持的。
使用unbind()
方法移除元素绑定的事件
unbind()方法可以移除元素已绑定的事件,它的调用格式如下:$(selector).unbind(event,fun)
其中参数event表示需要移除的事件名称,多个事件名用空格隔开,fun
参数为事件执行时调用的函数名称。
例如,点击按钮时,使用unbind()方法移除<div>
元素中已绑定的“dblclick”
事件,如下图所示:
<h3>unbind()移除绑定的事件</h3>
<input type="button" value="移除事件" id="btntest">
<div>土豪,咱们交个朋友吧</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("div").bind("click"(function() {
$(this).removeClass('backcolor').addClass('color');
}).bind("dblclick"(function() {
$(this).removeClass('color').addClass('backcolor');
})
$("#btntest").bind("click",function(){
$("div").unbind("dblclick");
$(this).attr("disabled","true");
});
});
</script>
在浏览器中显示的效果:
从图中可以看出,当使用
unbind()
方法移除已绑定的“dblclick”
事件时,再次双击<div>
元素,样式和文字都没有任何变化,表明移除事件成功。如果没有规定参数,
unbind()
方法会删除指定元素的所有事件处理程序。
使用one()
方法绑定元素的一次性事件
one()
方法可以绑定元素任何有效的事件,但这种方法绑定的事件只会触发一次,它的调用格式如下:$(selector).one(event,[data],fun)
参数event为事件名称,data为触发事件时携带的数据,fun为触发该事件时执行的函数。
例如,使用one方法
绑定<div>
元素的单击事件,在事件执行的函数中,累计执行的次数,并将该次数显示在页面中,如下图所示:
<h3>one()方法执行一次绑定事件</h3>
<div>我被点击了(0)次</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
var intI=0;
$("div").one("click",function() {
intI++;
$(this).html("我被点击了("+ intI +")次");
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,由于使用了one()
方法绑定<div>
元素的单击事件,因为事件函数只能执行一次,执行完成后,无论如何单击,都不再触发。
调用trigger()
方法手动触发指定的事件
trigger()方法可以直接手动触发元素指定的事件,这些事件可以是元素自带事件,也可以是自定义的事件,总之,该事件必须能执行,它的调用格式为:$(selector).trigger(event)
其中event
参数为需要手动触发的事件名称。
例如,当页面加载时,手动触发文本输入框的“select”
事件,使文本框的默认值处于全部被选中的状态,如下图所示:
<h3>trigger()手动触发事件</h3>
<input id="txtest" type="text" value="请输入您的姓名">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("input").trigger("select");
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,由于文本输入框调用trigger()
方法触发了“select”
事件,因此,当页面加载完成后,文本框中的默认值处于全部被选中的状态。
文本框的focus
和blur
事件
focus事件
在元素获取焦点时触发,如点击文本框时,触发该事件;而blur事件
则在元素丢失焦点时触发,如点击除文本框的任何元素,都会触发该事件。
例如,在触发文本框的“focus”
事件时,<div>
元素显示提示内容,如下图所示:
<h3>文字框的focus和blur事件</h3>
<input id="txtest" type="text" value="">
<div></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("input").bind("focus",function(){
$("div").html("请输入您的姓名!")
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击文本框时,触发文本框的“focus”
事件,在该事件中,页面中的<div>
元素显示提示信息。
下拉列表框的change
事件
当一个元素的值发生变化时,将会触发change
事件,例如在选择下拉列表框中的选项时,就会触change
事件。
例如,当在页面选择下拉列表框中的选项时,将在<div>
元素中显示所选择的选项内容,如下图所示:
<h3>下拉列表的change事件</h3>
<select name="" id="select">
<option value="葡萄">葡萄</option>
<option value="苹果">苹果</option>
<option value="荔枝">荔枝</option>
<option value="香蕉">香蕉</option>
</select>
<div></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("select").bind("change",function(){
$("div").html("你选择的是:"+ $(this).val());
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,由于使用bind()
方法绑定了下拉列表的“change”
事件,因此,当选择列表中的选项时,在<div>
元素中显示所选择的选项内容。
调用live()
方法绑定元素的事件
与bind()
方法相同,live()
方法与可以绑定元素的可执行事件,除此相同功能之外,live()
方法还可以绑定动态元素,即使用代码添加的元素事件,格式如下:$(selector).live(event,[data],fun)
参数event
为事件名称,data
为触发事件时携带的数据,fun为触发该事件时执行的函数。
例如,使用live()
方法绑定,页面中按钮元素的单击事件,而这个按钮是通过追加的方式添加至页面的。如下图所示:
<h3>live()方法绑定单个事件</h3>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("body").append("<input id=’btntest‘ value=’点击就不可用‘ type='button'>");
$("#btntest").live("click", function() {
$(this).attr("disabled", "true");
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,虽然按钮元素是在事件绑定声明之后,并且是通过追加的方式添加至页面的,但由于使用的是live()方法绑定元素的事件,因此,仍然生效。
注意:从 jQuery 1.7 开始,不再建议使用 .live() 方法。****1.9不支持.live(),本节代码编辑器里的js引用版本改为了1.8。
jQuery动画
调用show()
和hide()
方法显示和隐藏元素
show()和hide()方法用于显示或隐藏页面中的元素,它的调用格式分别为:$(selector).hide(speed,[callback])
和$(selector).show(speed,[callback])
参数speed
设置隐藏或显示时的速度值,可为“slow”
、“fast”
或毫秒数值,可选项参数callback为隐藏或显示动作执行完成后调用的函数名。
例如,在页面中,通过点击“显示”和“隐藏”两个按钮来控制图片元素的显示或隐藏状态,如下图所示:
<h3>show()和hide方法显示和隐藏元素</h3>
<input type="button" id="btnShow" value="显示">
<img src="cancel.png" alt="">
<input type="button" value="隐藏" id="btnHide">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
$("img").show();
});
$("#btnHide").bind("click",function(){
$("img").hide();
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,点击“显示”按钮时,可以将图片元素显示在页面中,点击“隐藏”按钮时,则将图片元素隐藏起来。
动画效果的show()
和hide()
方法
在上一小节中,调用show()
和hide()
方法仅是实现的元素的显示和隐藏功能,如果在这些方法中增加“speed”
参数可以实现动画效果的显示与隐藏,同时,如果添加了方法的回调函数,它将在显示或隐藏执行成功后被调用。
例如,以动画的方式显示或隐藏页面中的图片,同时,当显示或隐藏完成时,对应的按钮状态将变为不可用,如下图所示:
<h3>show()和hide()方法动画方式显示和隐藏元素</h3>
<input type="button" id="btnShow" value="显示">
<img src="cancel.png" alt="">
<input type="button" value="隐藏" id="btnHide">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
$("img").show(3000,function(){
$("#btnShow").attr("disabled",true);
$("#btnHide").attr("disabled",false);
});
});
$("#btnHide").bind("click",function(){
$("img").hide(3000,function(){
$("#btnShow").attr("disabled",false);
$("#btnHide").attr("disabled",true);
});
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当以动画方式显示或隐藏图片时,图片在显示或隐藏过程中,则以动画效果按“speed”
参数设置数字执行,完成后,调用回调函数中的代码。
调用toggle()
方法实现动画切换效果
第一节我们学过实现元素的显示与隐藏需要使用hide()
与show()
,那么有没有更简便的方法来实现同样的动画效果呢?
调用toggle()
方法就可以很容易做到,即如果元素处于显示状态,调用该方法则隐藏该元素,反之,则显示该元素,它的调用格式是:$(selector).toggle(speed,[callback])
其中speed
参数为动画效果时的速度值,可以为数字,单位为毫秒,也可是“fast”
、“slow”
字符,可选项参数callback
为方法执行成功后回调的函数名称。
例如,调用toggle()方法以动画的效果显示和隐藏图片元素,如下图所示:
<h3>show()和hide()方法动画方式显示和隐藏元素</h3>
<img src="cancel.png" alt="">
<input type="button" value="隐藏" id="btnAct">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("btnAct").bind("click", function() {
var $this = $(this);
$("img").toggle(3000, function() {
$this.val() == "隐藏" ? $this.val("显示") : $this.val("隐藏");
});
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当按钮显示内容为“隐藏”时,点击该按钮,将调用toggle()方法以动画的方式隐藏图片元素,隐藏成功后,按钮显示的内容变为“显示”。
使用slideUp()
和slideDown()
方法的滑动效果
可以使用slideUp()
和slideDown()
方法在页面中滑动元素,前者用于向上滑动元素,后者用于向下滑动元素,它们的调用方法分别为:$(selector).slideUp(speed,[callback])
和$(selector).slideDown(speed,[callback])
其中speed
参数为滑动时的速度,单位是毫秒,可选项参数callback
为滑动成功后执行的回调函数名。
要注意的是:slideDown()
仅适用于被隐藏的元素;slideup()
则相反。
例如,调用slideUp()
和slideDown()
方法实现页面中元素的向上和向下的滑动效果,如下图所示:
<h3>使用slideUp()和slideDown()方法的滑动效果</h3>
<div id="divtest">
<img src="cancel.png" height="110" width="110" alt="">
</div>
<input type="button" value="向上滑" id="btnAct">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
var $div = $("#divtest");
$("#btnAct").bind("click",function(){
var $this = $(this);
if ($this.val()=="向上滑") {
$div.slideUp(3000,function(){
$this.val("向下滑");
});
}else {
$div.slideDown(3000,function(){
$this.val("向上滑");
});
}
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,根据按钮中显示的内容,分别调用slideUp()
和slideDown()
方法,实现图片元素向上和向下的滑动效果,当每个滑动效果完成时,再通过回调函数改变按钮中显示内容。
滑动与淡入淡出的区别:滑动改变元素的高度,淡入淡出改变元素的透明度。
使用slideToggle()
方法实现图片“变脸”效果
使用slideToggle()
方法可以切换slideUp()
和slideDown()
,即调用该方法时,如果元素已向上滑动,则元素自动向下滑动,反之,则元素自动向上滑动,格式为:$(selector).slideToggle(speed,[callback])
其中speed参数为动画效果时的速度值,可以为数字,单位为毫秒,也可是“fast”、“slow”字符,可选项参数callback为方法执行成功后回调的函数名称。
例如,在页面中,使用slideToggle()
方法实现图片“变脸”效果,如下图所示:
<h3>使用slideToggle()方法实现图片“变脸”效果</h3>
<div id="divtest1">
<img src="cancel.png" height="110" width="110">
</div>
<div id="divtest2">
<img src="cancel.png" height="110" width="110">
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
var $div1 = $("#divtest1");
var $div2 = $("#divtest2");
$div1.bind("click",function(){
$div1.slideToggle(3000,function(){
$div2.slideToggle(3000);
});
});
$div2.bind("click",function(){
$div2.slideToggle(3000,function(){
$div1.slideToggle(3000);
})
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击第一张图片时,向上滑动收起该图片,当收起完成时,触发回调函数,调用第二张图片的slideToggle()
方法,向下滑动显示第二张图片。
使用fadeIn()
与fadeOut()
方法实现淡入淡出效果
fadeIn()和fadeOut()方法可以实现元素的淡入淡出效果,前者淡入隐藏的元素,后者可以淡出可见的元素,它们的调用格式分别为:$(selector).fadeIn(speed,[callback])
和$(selector).fadeOut(speed,[callback])
其中参数speed
为淡入淡出的速度,callback
参数为完成后执行的回调函数名。
例如,分别在页面中以淡入淡出的动画效果显示图片元素,如下图所示:
<h3>使用slideToggle()方法实现图片“变脸”效果</h3>
<div id="divtest1">
<img src="cancel.png" height="110" width="110">
</div>
<div id="divtest2">
<img src="cancel.png" height="110" width="110">
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
var $div1 = $("#divtest1");
var $div2 = $("#divtest2");
$div1.bind("click",function(){
$div1.fadeOut('3000', function() {
});(3000,function(){
$div2.fadeIn(3000);
});
});
$div2.bind("click",function(){
$div2.fadeOut(3000,function(){
$div1.fadeIn(3000);
})
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“淡出”按钮时,调用fadeOut()
方法以淡出效果隐藏图片,当点击“淡入”按钮时,调用fadeIn()
方法以淡入效果显示图片。
使用fadeTo()
方法设置淡入淡出效果的不透明度
调用fadeTo()方法,可以将所选择元素的不透明度以淡入淡出的效果调整为指定的值,该方法的调用格式为:$(selector).fadeTo(speed,opacity,[callback])
其中speed参数
为效果的速度,opacity参数
为指定的不透明值,它的取值范围是0.0~1.0
,可选项参数callback
为效果完成后,回调的函数名。
例如,分别调用fadeTo()
方法,设置三个图片元素的不透明度值,如下图所示:
<h3>使用fadeTo()方法设置淡入淡出效果的不透明度</h3>
<img src="cancel.png" height="110" width="110" alt="">
<img src="cancel.png" height="110" width="110">
<img src="cancel.png" height="110" width="110">
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("img").each(function(index){
switch (index) {
case 0:
$(this).fadeTo(3000, 0.2);
break;
case 1:
$(this).fadeTo(3000, 0.4);
break;
case 2:
$(this).fadeTo(3000, 0.6);
break;
}
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,调用fadeTo()
方法,分别改变“opacity”
参数的值,以淡入淡出的动画效果设置图片元素的不透明度。
调用animate()
方法制作简单的动画效果
调用animate()
方法可以创建自定义动画效果,它的调用格式为:$(selector).animate({params},speed,[callback])
其中,params
参数为制作动画效果的CSS属性名与值,speed
参数为动画的效果的速度,单位为毫秒,可选项callback参数
为动画完成时执行的回调函数名。
例如,调用animate()
方法以由小到大的动画效果显示图片,如下图所示:
<h3>制作简单的动画效果</h3>
<img src="cancel.png" height="110" width="110">
<din id="tip"></din>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("img").animate({
width:"200px",
height:"200px"
},
3000,function(){
$("#tip").html("执行完成!");
});
});
</script>
在浏览器中显示的效果:
从图中可以看出,调用animate()
方法,以渐渐放大的动画效果显示图片元素,当动画执行完成后,通过回调函数在页面的<div>
元素中显示“执行完成!”的字样。
调用animate()方法制作移动位置的动画
调用animate()
方法不仅可以制作简单渐渐变大的动画效果,而且还能制作移动位置的动画,在移动位置之前,必须将被移元素的“position”
属性值设为“absolute”
或“relative”
,否则,该元素移动不了。
例如,调用animate()
方法先将图片向右移动90px,然后,再将图片宽度与高度分别增加30px,如下图所示:
<h3>制作简单的动画效果</h3>
<img src="cancel.png" height="110" width="110">
<din id="tip"></din>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("img").animate({
left:"+=90px"
},3000,function(){
$(this).animate({
height:'+=30px',
width:'+=30px'
},3000,function(){
$("#tip").html("执行完成!");
});
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,图片先向右移动了“90px”,然后,移动成功后,再在原来的基础之上以动画的效果增大30px,增加成功后,显示“执行完成!”的字样。
调用stop()
方法停止当前所有动画效果
stop()
方法的功能是在动画完成之前,停止当前正在执行的动画效果,这些效果包括滑动、淡入淡出和自定义的动画,它的调用格式为:$(selector).stop([clearQueue],[goToEnd])
其中,两个可选项参数clearQueue
和goToEnd
都是布尔类型值,前者表示是否停止正在执行的动画,后者表示是否完成正在执行的动画,默认为false。
例如,在页面中,当图片元素正在执行动画效果时,点击“停止”按钮,中止正在执行的动画效果,如下图所示:
<h3>制作简单的动画效果</h3>
<img src="cancel.png">
<input type="button" value="停止" id="btnStop">
<div id="tip"></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("img").animate({
left:'+=30px'
},3000,function(){
$(this).animate({
height:'+=30px',
width:'+=30px'
},3000,function(){
$("#tip").html("执行完成!");
});
});
$("#btnStop").bind("click",function(){
$("img").stop();
$("#tip").html("执行停止!");
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当页面中的图片正在执行动画效果向右移动时,由于点击了“停止”按钮,执行了图片元素的stop方法
,因此,中止了正在执行的动画效果。
调用delay()
方法延时执行动画效果
delay()方法
的功能是设置一个延时值来推迟动画效果的执行,它的调用格式为:$(selector).delay(duration)
其中参数duration
为延时值,它的单位是毫秒,当超过延时值时,动画继续执行。
例如,当页面中图片动画正在执行时,点击“延时”按钮调用delay()
方法推迟2000毫秒后继续执行,如下图所示:
<h3>制作简单的动画效果</h3>
<img src="cancel.png">
<input type="button" value="延时" id="btnStop">
<div id="tip"></div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("img").animate({
width: '+=30px'
},5000,function(){
$(this).animate({
height:'+=30px',
width:'+=30px'
},3000,function(){
$("#tip").html("执行完成!");
});
});
$("#btnStop").bind("click",function(){
$("img").delay(2000);
$("#tip").html("正在延时");
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当图片动画正在执行时,点击“延时”按钮,调用delay()方法中止当前正在执行的图片动画效果,当超过设置的延时值时,动画效果继续执行。
Ajax
使用load()
方法异步请求数据
使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:load(url,[data],[callback])
参数url
为加载服务器地址,可选项data
参数为请求时发送的数据,callback
参数为数据请求成功后,执行的回调函数。
例如,点击“加载”按钮时,向服务器请求加载一个指定页面的内容,加载成功后,将数据内容显示在<div>
元素中,并将加载按钮变为不可用。如下图所示:
<h3>使用load方法异步请求数据</h3>
<div id="divtest">
<div class="title">
<span class="f1">我最爱吃的水果</span>
<span class="fr"><input type="button" value="加载" id="btnShow"></span>
</div>
<div class="content"></div>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
var $this = $(this);
$(".content")
.html("<img src="cancel.png">")
.load("tab.html",function(){
$this.attr("disabled","true");
});
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“加载”按钮时,通过调用load()方法
向服务器请求加载fruit.html
文件中的内容,当加载成功后,先显示数据,并将按钮变为不可用。
使用getJSON()
方法异步加载JSON格式数据
使用getJSON()
方法可以通过Ajax
异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为:jQuery.getJSON(url,[data],[callback])
或$.getJSON(url,[data],[callback])
其中,url参数
为请求加载json格式文件的服务器地址,可选项data参数
为请求时发送的数据,callback参数
为数据请求成功后,执行的回调函数。
例如,点击页面中的“加载”按钮,调用getJSON()方法
获取服务器中JSON格式文件中的数据,并遍历数据,将指定的字段名内容显示在页面中。如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">我最喜欢的运动</span>
<span class="fr"><input type="button" value="加载" id="btnShow"></span>
</div>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
var $this=$(this);
$.getJSON("sport.json",function(data){
$this.attr("disabled","true");
$.each(data,function(index,sport){
$("ul").append("<li>" + sport["name"] + "</li>")
});
});
})
});
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“加载”按钮时,通过getJSON()
方法调用服务器中的sport.json文件,获取返回的data文件数据,并遍历该数据对象,以data[“name”]
取出数据中指定的内容,显示在页面中。
使用getScript()
方法异步加载并执行js文件
使用getScript()
方法异步请求并执行服务器中的JavaScript格式的文件,它的调用格式如下所示:
jQuery.getScript(url,[callback])
或$.getScript(url,[callback])
参数url为服务器请求地址,可选项callback
参数为请求成功后执行的回调函数。
例如,点击“加载”按钮,调用getScript()
加载并执行服务器中指定名称的JavaScript格式的文件,并在页面中显示加载后的数据内容,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">我最喜欢的运动</span>
<span class="fr"><input type="button" value="加载" id="btnShow"></span>
</div>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
// var $this=$(this);
// $.getScript("sport.js",function(data){
// $this.attr("disabled","true");
// });
$.each(data,function(index, sport) {
$("ul").append("<li>" + sport["name"] + "</li>");
});
})
});
</script>
<script src="sport.js"></script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“加载”按钮调用getScript()方法加载服务器中的JavaScript格式文件后,自动执行文件代码,将数据内容显示在<ul>
元素中。
使用get()方法以GET方式从服务器获取数据
使用get()
方法时,采用GET方式
向服务器请求数据,并通过方法中回调函数的参数返回请求的数据,它的调用格式如下:$.get(url,[callback])
参数url为服务器请求地址,可选项callback参数为请求成功后执行的回调函数。
例如,当点击“加载”按钮时,调用get()方法向服务器中的一个.php文件以GET方式请求数据,并将返回的数据内容显示在页面中,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">我的个人资料</span>
<span class="fr"><input type="button" value="加载" id="btnShow"></span>
</div>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
var $this=$(this);
$.get("info.php",function(data){
$this.attr("disabled","true");
$("ul").append("<li>我的名字叫:" + data.name + "</li>");
$("ul").append("<li>常常有人对我说:" + data.say + "</li>")
},"json");
})
});
</script>
<script src="sport.js"></script>
在浏览器中显示的效果:
Alt text
从图中可以看出,通过$.get()方法向服务器成功请求数据后,在回调函数中通过data参数传回请求的数据,并以data.name格式访问数据中各项的内容。
使用post()
方法以POST方式从服务器发送数据
与get()
方法相比,post()
方法多用于以POST方式向服务器发送数据,服务器接收到数据之后,进行处理,并将处理结果返回页面,调用格式如下:$.post(url,[data],[callback])
参数url为服务器请求地址,可选项data为向服务器请求时发送的数据,可选项callback参数为请求成功后执行的回调函数。
例如,在输入框中录入一个数字,点击“检测”按钮,调用post()
方法向服务器以POST方式发送请求,检测输入值的奇偶性,并显示在页面中,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">检查数字的奇偶性</span>
<span class="fr">
<input type="button" value="检测" id="btnShow"></span>
</div>
<ul>
<li>请输入一个数字
<input type="text" id="txtNumber" size="12"/>
</li>
</ul>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind("click",function(){
$.post("check.php",{
num:$("#txtNumber").val()
},
function(data){
$("ul").append('<li>你输入的<b>' + $("#txtNumber").val() + "</b>是<b>" + data + "</b></li>");
}) ;
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“检测”按钮时,获取输入框中的值,并将该值使用$.post()方法一起发送给服务器,服务器接收该值后并进行处理,最后返回处理结果。
使用serialize()
方法序列化表单元素值
使用serialize()
方法可以将表单中有name属性
的元素值进行序列化,生成标准URL编码文本字符串,直接可用于ajax请求,它的调用格式如下:$(selector).serialize()
其中selector参数是一个或多个表单中的元素或表单元素本身。
例如,在表单中添加多个元素,点击“序列化”按钮后,调用serialize()方法,将表单元素序列化后的标准URL编码文本字符串显示在页面中,如下图所示:
<div id="divtest">
<div class="title">
<class class="f1">我的个人资料</class>
<span class="fr">
<input type="button" value="序列化" id="btnAction"/>
</span>
</div>
<form action="">
<li>姓名:<input type="text" name="Text1" size="12"/></li>
<li>
<select name="Select1">
<option value="0">男</option>
<option value="1">女</option>
</select>
</li>
<li><input type="checkbox" name="Checkbox1"/>资料是否可见</li>
<li id="litest"></li>
</form>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnAction").bind("click",function(){
$("#litest").html($("form").serialize());
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“序列化”按钮后,调用表单元素本身的serialize()方法,将表单中元素全部序列化,生成标准URL编码,各元素间通过&号相联。
使用ajax()
方法加载服务器数据
使用ajax()方法是最底层、功能最强大的请求服务器数据的方法,它不仅可以获取服务器返回的数据,还能向服务器发送请求并传递数值,它的调用格式如下:jQuery.ajax([settings])或$.ajax([settings])
其中参数settings
为发送ajax请求时的配置对象
,在该对象中,url表示服务器请求的路径,data
为请求时传递的数据,dataType
为服务器返回的数据类型,success
为请求成功的执行的回调函数,type
为发送数据请求的方式,默认为get
。
例如,点击页面中的“加载”按钮,调用ajax()方法向服务器请求加载一个txt文件,并将返回的文件中的内容显示在页面,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">加载一段文字</span>
<span class="fr">
<input type="button" value="加载" id="btnShow">
</span>
</div>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind('click', function() {
var $this = $(this);
$.ajax({
url:"article.txt",
dataType:"text",
sunccess:function(data){
$this.attr("disabled","true");
$("ul").append(data);
}
});
});
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,当点击“加载”按钮时,调用$.ajax()
方法请求服务器中txt文件,当请求成功时调用success回调函数
,获取传回的数据,并显示在页面中。
使用ajaxSetup()
方法设置全局Ajax
默认选项
使用ajaxSetup()
方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为:jQuery.ajaxSetup([options])或$.ajaxSetup([options])
可选项options参数为一个对象,通过该对象设置Ajax请求时的全局选项值。
例如,先调用ajaxSetup()方法设置全局的Ajax选项值,再点击两个按钮,分别使用ajax()方法请求不同的服务器数据,并将数据内容显示在页面,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">加载一段文字</span>
<span class="fr">
<input type="button" value="加载1" id="btnShow_1">
<input type="button" value="加载2" id="btnShow_2">
</span>
</div>
<ul></ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#btnShow").bind('click', function() {
$.ajaxSetup({
dataType:"text",
success:function(data){
$("ul").empty().append(data);
}
});
$("#btnShow_1").bind("click",function(){
$.ajax({url:article_1.txt})
})
$("#btnShow_1").bind("click",function(){
$.ajax({url:article_1.txt})
})
});
});
</script>
在浏览器中显示的效果:
从图中可以看出,使用
ajaxSetup()
方法设置了Ajax请求时的一些全局性的配置选项后,在两次调用ajax请求服务器txt文件时
,只需要设置url地址
即可。
使用ajaxStart()
和ajaxStop()
方法
ajaxStart()
和ajaxStop()
方法是绑定Ajax事件。ajaxStart()
方法用于在Ajax请求发出前触发函数,ajaxStop()
方法用于在Ajax请求完成后触发函数。它们的调用格式为:$(selector).ajaxStart(function())
和$(selector).ajaxStop(function())
其中,两个方法中括号都是绑定的函数,当发送Ajax请求前执行ajaxStart()方法绑定的函数,请求成功后,执行ajaxStop ()
方法绑定的函数。
例如,在调用ajax()
方法请求服务器数据前,使用动画显示正在加载中,当请求成功后,该动画自动隐藏,如下图所示:
<div id="divtest">
<div class="title">
<span class="f1">加载一段文字</span>
<span class="fr">
<input type="button" value="加载" id="btnShow_1">
</span>
</div>
<ul>
<li id="divload"><img src="cancel.png" height="110" width="110"></li>
</ul>
</div>
<script src="Bootstrap test/jQuery/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
$("#divload").ajaxStart(function(){$(this).show();});
$("#divload").ajaxStop(function(){$(this).hide();});
$("#btnShow_1").bind("click",function(){
var $this = $(this);
$.ajax({
url: 'info.php',
dataType: 'json',
sunccess:function(data){
$this.attr("disabled","true");
$("ul").append("<li>我的名字叫:" + data.name + "</li>");
$("ul").append("<li>我的名字叫:" + data.name + "</li>");
}
});
})
});
</script>
在浏览器中显示的效果:
Alt text
从图中可以看出,由于使用ajaxStart()
和ajaxStop()
方法绑定了动画元素,因此,在开始发送Ajax请求时,元素显示,请求完成时,动画元素自动隐藏。
注意:该方法在1.8.2下使用是正常的
网友评论