jQuery
jQuery简介
含义:jQuery,是简化了的JavaScript,也就是JavaScript 和查询(Query),它就是辅助JavaScript 开发的js 类库。
核心思想:write less,do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题。
jQuery的核心函数 $()
使用jQuery之前一定要引入jQuery库
<script type=“text/javascript” src=“jquery-1.7.2.js”></script>
jQuery文档就绪事件(入口函数):
第一种方式:
$(document).ready(function(){
});
第二种方式(也是第一种方式的简写):
$(function(){
});
js入口函数:
window.onload = function () {
}
jQuery入口函数和js入口函数的区别:
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 创建好DOM对象和页面显示的内容(图片,网页链接等) | 创建好DOM 对象之后 |
执行顺序 | 后执行 | 先执行 |
执行次数 | 至多一次(因为会被覆盖) | 可以多次 |
$()函数的常用参数
- 传入参数为[ 函数] 时:
表示页面加载完成之后。相当于window.onload = function(){} - 传入参数为[ HTML 字符串] 时:
会对我们创建这个html 标签对象 - 传入参数为[ 选择器字符串] 时:
$(“#id 属性值”); id 选择器,根据id 查询标签对象
$(“标签名”); 标签名选择器,根据指定的标签名查询标签对象
$(“.class 属性值”); 类型选择器,可以根据class 属性查询标签对象 - 传入参数为[ DOM 对象] 时:
会把这个DOM 对象转换为jQuery 对象
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
//核心函数的4个常用操作
//1.传入参数为[函数]时:在文档加载完成后执行这个函数
$(function () {
//2.传入参数为[HTML字符串]时:根据这个字符串创建元素节点对象
alert("页面加载完成之后自动调用");
$("<div>" +
" <span>div-span1</span>" +
" <span>div-span2</span>" +
" </div>").appendTo("body");
//3.传入参数为[选择器字符串]时:根据这个字符串查找元素节点对象
alert($("button").length);
//通过id得到dom对象
var btnObj = document.getElementById('btn01');
alert(btnObj);//[object HTMLButtonElement] DOM对象
//4.传入参数为[DOM对象]时:将DOM对象包装为jQuery对象返回
alert($(btnObj));//[object Object] jQuery对象
// alert($("<h1></h1>"))//[object Object] jQuery对象
alert($("#button"));//[object Object] jQuery对象
});
</script>
jQuery对象
jQuery 对象是dom 对象的数组+ jQuery 提供的一系列功能函数。
jQuery 对象不能使用DOM 对象的属性和方法
DOM 对象也不能使用jQuery 对象的属性和方法
jQuery对象和DOM对象的相互转换:
- dom 对象转化为jQuery 对象
$( DOM 对象) 就可以转换成为jQuery 对象 - jQuery 对象转为dom 对象
jQuery 对象[下标]取出相应的DOM 对象
DOM对象转换为jQuery对象,然后再通过下标转换为DOM对象的示例:
alert($(document.getElementById(“testDiv”))[0]);
jQuery 选择器
基本选择器
#ID 选择器 | 根据id 查找标签对象 |
---|---|
.class 选择器 | 根据class 查找标签对象 |
element 选择器 | 根据标签名查找标签对象 |
* 选择器 | 表示任意的,所有的元素 |
selector1,selector2 组合选择器 | 合并选择器1,选择器2 的结果并返回 |
层级选择器
ancestor descendant 后代选择器 | 在给定的祖先元素下匹配所有的后代元素 |
---|---|
parent > child 子元素选择器 | 在给定的父元素下匹配所有的子元素 |
prev + next 相邻元素选择器 | 匹配所有紧接在prev 元素后的next 元素 |
prev ~ sibings 之后的兄弟元素选择器 | 匹配prev 元素之后的所有siblings 元素 |
过滤选择器
基本过滤器
:first | 获取第一个元素 |
---|---|
:last | 获取最后个元素 |
:not(selector) | 去除所有与给定选择器匹配的元素 |
:even | 匹配所有索引值为偶数的元素,从0 开始计数 |
:odd | 匹配所有索引值为奇数的元素,从0 开始计数 |
:eq(index) | 匹配一个给定索引值的元素 |
:gt(index) | 匹配所有大于给定索引值的元素 |
:lt(index) | 匹配所有小于给定索引值的元素 |
:header | 匹配如h1, h2, h3 之类的标题元素 |
:animated | 匹配所有正在执行动画效果的元素 |
内容过滤器
:contains(text) | 匹配包含给定文本的元素 |
---|---|
:empty | 匹配所有不包含子元素或者文本的空元素 |
:parent | 匹配含有子元素或者文本的元素 |
:has(selector) | 匹配含有选择器所匹配的元素的元素 |
用法示例:
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function () {
/**
:contains(text)
:empty
:has(selector)
:parent
*/
$(document).ready(function () {
//1.选择 含有文本 'di' 的 div 元素
$("#btn1").click(function () {
$("div:contains(di)").css("background", "#bbffaa");
});
//2.选择不包含子元素(或者文本元素) 的 div 空元素
$("#btn2").click(function () {
$("div:empty").css("background", "#bbffaa");
});
//3.选择含有 class 为 mini 元素的 div 元素
$("#btn3").click(function () {
$("div:has(.mini)").css("background", "#bbffaa");
});
//4.选择含有子元素(或者文本元素)的div元素
$("#btn4").click(function () {
$("div:parent").css("background", "#bbffaa");
});
});
</script>
属性过滤器
[attribute] | 匹配包含给定属性的元素。 |
---|---|
[attribute=value] | 匹配给定的属性是某个特定值的元素 |
[attribute!=value] | 匹配所有不含有指定的属性,或者属性不等于特定值的元素。 |
[attribute^=value] | 匹配给定的属性是以某些值开始的元素 |
[attribute$=value] | 匹配给定的属性是以某些值结尾的元素 |
[attribute*=value] | 匹配给定的属性是以包含某些值的元素 |
[attrSel1][attrSel2][attrSelN] | 复合属性选择器,需要同时满足多个条件时使用。 |
用法示例:
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
//1.选取含有 属性title 的div元素
$("#btn1").click(function () {
$("div[title]").css("background", "#bbffaa");
});
//2.选取 属性title值等于'test'的div元素
$("#btn2").click(function () {
$("div[title='test']").css("background", "#bbffaa");
});
//3.选取 属性title值不等于'test'的div元素(*没有属性title的也将被选中)
$("#btn3").click(function () {
$("div[title!='test']").css("background", "#bbffaa");
});
//4.选取 属性title值 以'te'开始 的div元素
$("#btn4").click(function () {
$("div[title^='te']").css("background", "#bbffaa");
});
//5.选取 属性title值 以'est'结束 的div元素
$("#btn5").click(function () {
$("div[title$='est']").css("background", "#bbffaa");
});
//6.选取 属性title值 含有'es'的div元素
$("#btn6").click(function () {
$("div[title*='es']").css("background", "#bbffaa");
});
//7.首先选取有属性id的div元素,然后在结果中 选取属性title值 含有'es'的 div 元素
$("#btn7").click(function () {
$("div[id][title*='es']").css("background", "#bbffaa");
});
//8.选取 含有 title 属性值, 且title 属性值不等于 test 的 div 元素
$("#btn8").click(function () {
$("div[title][title!='test']").css("background", "#bbffaa");
});
});
</script>
表单过滤器
:input | 匹配所有input, textarea, select 和button 元素 |
---|---|
:text | 匹配所有文本输入框 |
:password | 匹配所有的密码输入框 |
:radio | 匹配所有的单选框 |
:checkbox | 匹配所有的复选框 |
:submit | 匹配所有提交按钮 |
:image | 匹配所有img 标签 |
:reset | 匹配所有重置按钮 |
:button | 匹配所有input type=button 按钮 |
:file | 匹配所有input type=file 文件上传 |
:hidden | 匹配所有不可见元素display:none 或input type=hidden |
表单对象过滤器
:enabled | 匹配所有可用元素 |
---|---|
:disabled | 匹配所有不可用元素 |
:checked | 匹配所有选中的单选,复选,和下拉列表中选中的option 标签对象 |
:selected | 匹配所有选中的option |
在遍历的function函数中,有一个this对象,这个this对象,就是遍历到的dom对象
在遍历中体会this的用法:
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
//1.对表单内 可用input 赋值操作
$("#btn1").click(function(){
//val()可以操作表单项的value属性值
//它可以设置和获取
$(":text:enabled").val("可用的框框");
});
//2.对表单内 不可用input 赋值操作
$("#btn2").click(function(){
$(":text:disabled").val("不可用,也能用,气不气?");
});
//3.获取多选框选中的个数 使用size()方法获取选取到的元素集合的元素个数
$("#btn3").click(function(){
// alert($(":checkbox:checked").size())//和length属性一样
alert($(":checkbox:checked").length)
});
//4.获取多选框,每个选中的value值
$("#btn4").click(function(){
//获取全部选中的复选框标签对象
var $checkboies = $(":checkbox:checked");
//老式遍历
for (var i = 0; i < $checkboies.length; i++) {
alert($checkboies[i].value);
}
//each方法是jQuery对象提供的用来遍历元素的方法
//在遍历的function函数中,有一个this对象,这个this对象,就是遍历到的dom对象
$checkboies.each(function (){
alert(this.value);
});
});
//5.获取下拉框选中的内容
$("#btn5").click(function(){
//获取选中的option标签对象
var $options = $("select option:selected");
//遍历,获取option标签中的文本内容
$options.each(function(){
//在each遍历时的function 函数中,有一个this对象,这个this对象是当前正在遍历的dom对象
alert(this.innerHTML);
});
});
})
</script>
表单对象操作选择框:
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
//批量操作单选
$(":radio").val(["radio2"]);
//批量操作复选框的选中状态
$(":checkbox").val(["checkbox1","checkbox2"]);
//批量操作多选的下拉框选中状态
$("#multiple").val(["mul2","mul4"]);
//操作单选的下拉框选中状态
$("#single").val(["sin2"]);
$(":radio,:checkbox,#multiple,#single").val(["radio2", "checkbox1", "mul4", "sin3"]);
});
</script>
jQuery元素筛选
eq() | 获取给定索引的元素 |
---|---|
first() | 获取第一个元素 |
last() | 获取最后一个元素 |
filter(exp) | 留下匹配的元素 |
is(exp) | 判断是否匹配给定的选择器,只要有一个匹配就返回true |
has(exp) | 返回包含有匹配选择器的元素的元素 |
not(exp) | 删除匹配选择器的元素 |
children(exp) | 返回匹配给定选择器的子元素 |
find(exp) | 返回匹配给定选择器的后代元素 |
next() | 返回当前元素的下一个兄弟元素 |
nextAll() | 返回当前元素后面所有的兄弟元素 |
nextUntil() | 返回当前元素到指定匹配的元素为止的后面元素 |
parent() | 返回父元素 |
prev(exp) | 返回当前元素的上一个兄弟元素 |
prevAll() | 返回当前元素前面所有的兄弟元素 |
prevUnit(exp) | 返回当前元素到指定匹配的元素为止的前面元素 |
siblings(exp) | 返回所有兄弟元素 |
add() | 把add 匹配的选择器的元素添加到当前jquery 对象中 |
用法示例:(差别不大,筛选的元素.方法)
<script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function () {
//(1)eq() 选择索引值为等于 3 的 div 元素
$("#btn1").click(function () {
$("div").eq(3).css("background-color", "#bfa");
});
//(2)first()选择第一个 div 元素
$("#btn2").click(function () {
//first() 选取第一个元素
$("div").first().css("background-color", "#bfa");
});
//(3)last()选择最后一个 div 元素
$("#btn3").click(function () {
//last() 选取最后一个元素
$("div").last().css("background-color", "#bfa");
});
//(4)filter()在div中选择索引为偶数的
$("#btn4").click(function () {
//filter() 过滤 传入的是选择器字符串
$("div").filter(":even").css("background-color", "#bfa");
});
//(5)is()判断#one是否为:empty或:parent
//is用来检测jq对象是否符合指定的选择器
$("#btn5").click(function () {
alert($("#one").is(":empty"));
});
//(6)has()选择div中包含.mini的
$("#btn6").click(function () {
//has(selector) 选择器字符串 是否包含selector
$("div").has(".mini").css("background-color", "#bfa");
});
//(7)not()选择div中class不为one的
$("#btn7").click(function () {
//not(selector) 选择不是selector的元素
$("div").not('.one').css("background-color", "#bfa");
});
//(8)children()在body中选择所有class为one的div子元素
$("#btn8").click(function () {
//children() 选出所有的子元素
$("body").children("div.one").css("background-color", "#bfa");
});
//(9)find()在body中选择所有class为mini的div元素
$("#btn9").click(function () {
//find() 选出所有的后代元素
$("body").find("div.mini").css("background-color", "#bfa");
});
//(10)next() #one的下一个div
$("#btn10").click(function () {
//next() 选择下一个兄弟元素
$("#one").next("div").css("background-color", "#bfa");
});
//(11)nextAll() #one后面所有的span元素
$("#btn11").click(function () {
//nextAll() 选出后面所有的元素
$("#one").nextAll("span").css("background-color", "#bfa");
});
//(12)nextUntil() #one和span之间的元素
$("#btn12").click(function () {
//
$("#one").nextUntil("span").css("background-color", "#bfa")
});
//(13)parent() .mini的父元素
$("#btn13").click(function () {
$(".mini").parent().css("background-color", "#bfa");
});
//(14)prev() #two的上一个div
$("#btn14").click(function () {
//prev()
$("#two").prev("div").css("background-color", "#bfa")
});
//(15)prevAll() span前面所有的div
$("#btn15").click(function () {
//prevAll() 选出前面所有的元素
$("span").prevAll("div").css("background-color", "#bfa")
});
//(16)prevUntil() span向前直到#one的元素
$("#btn16").click(function () {
//prevUntil(exp) 找到之前所有的兄弟元素直到找到exp停止
$("span").prevUntil("#one").css("background-color", "#bfa")
});
//(17)siblings() #two的所有兄弟元素
$("#btn17").click(function () {
//siblings() 找到所有的兄弟元素,包括前面的和后面的
$("#two").siblings().css("background-color", "#bfa")
});
//(18)add()选择所有的 span 元素和id为two的元素
$("#btn18").click(function () {
// $("span,#two,.mini,#one")
$("span").add("#two").add("#one").add(".mini").css("background-color", "#bfa");
});
});
</script>