Appearance
4.1 基本介绍
jQuery不是新的语言,由原生js封装的js类库,常用于大量直接操作DOM
类库:jQuery/ZEPTO(移动端)提供一些常用方法,任何项目可以导入该库去使用里面的方法,完成我们自己的业务逻辑。
插件:有一定的业务功能的 例如轮播图插件、选项卡插件、模态框等(插件规定了当前这个功能的样式和结构,实现的功能用js封装)。
UI组件:把结构、样式、行为全部封装好,我们想实现一个功能,直接导入进来(Bootstrap)。
框架:具备一定的变成思想 开发者按照其思想开发,一般框架提供了常用的类库、插件、UI组件(vue/react/angular/backbone)。
4.2 选择器
js
$("p")
$(".demo")
$("#one")
$("*")
$(".box1 p")
$(".box1 p.cur")
$(".box1,#p1")4.3 jQuery与原生js转化
jQuery对象--->原生js对象
js
$("div")[0]原生js对象--->jQuery对象
js
$(this)4.4 jQuery常用方法
- 设置:
js
.html("") // === innerHTML- 获取:.html()
js
element.html()- 设置/获取:
js
$("img").attr("width","180"); // === obj.style.width- 添加:
js
$("div").addClass("box") // === obj.className- 移除:removeClass
js
$("div").removeClass("box")- 切换:
js
$("div").toggleClass("box")- 事件:
js
click(fn(){})
on("click",function(){})
mouseover(fn(){})
mouseout(fn(){})
mousemove(fn(){})on()和click()的区别:
二者在绑定静态控件时没有区别,但是如果面对动态产生的控件,只有 on() 能成功的绑定到动态控件中。
- 样式:
js
css("width","200px")
css({"width":"500px","height":"500px"})
css("width") // 只写一个参数 表示获取- 获取元素内容宽度 $("div").width()
- 获取元素内容宽度
js
$("div").innerWidth()innerWidth():
- 获取元素外部宽度
js
$("div").outerWidth() //元素内容宽度+padding+border
$("div").outerWidth(true)//元素内容宽度+padding+border+margin- 动画:
显示:show(time) 隐藏hide(time) 切换toggle(time) 长宽透明度同时变换
显示:slideUp(time) 隐藏slideDown(time) 切换slideToggle(time) 高度变换
淡入:fadeIn() 淡出:fadeOut() 切换淡入淡出fadeToggle()透明度调整到:fadeTo()
- 节点:
获取子元素:
js
$("div:(0)"); // 访问第一个div元素parent()必须是亲父亲
children()必须是亲儿子
siblings()兄弟(除自己之外的亲兄弟)
find()查找后代
next()下一个兄弟
prev()一个兄弟
nextAll()后面的所以兄弟
js
nextAll("p")prev()上一个兄弟
prevAll()前面所以兄弟
parents()所以祖先元素
eq()将所有符合的元素按照取出顺序排列
index()元素在父元素中的位置
each(function(index,element)) 为每个匹配元素规定运行的函数。(返回 false 可用于及早停止循环。)
js
$("tr").each(function(){
$(this).children(":even").css("background","pink");
}) //隔列操作- 链式编程:
点击一个元素,自己变紫,父亲蓝,兄弟黄,父亲的兄弟粉,父亲兄弟的儿子红
js
$("div").children().click(function(){
var el = $(this).css("background","purple") //自己
.siblings().css("background","yellow") //自己的兄弟
.parent().css("background","blue") //自己的父亲
.siblings().css("background","pink") //父亲的兄弟
.children().css("background","red") //父亲的儿子
});
```js
$(function(){});
$(document).ready() //入口函数同window.onloadmouseenter/mouseleave代替mouseover/mouseout 创建元素
js
$("<h1>标题</h1>");父亲加儿子:.append();
儿子被加到父亲在:.appendTo();
4.5 jQuery下的Ajax
POST:
js
$.post("1.php",{"k":"v"},function(data){ });//请求路径、传到服务器的数据、回调函数GET:
js
$.get("1.txt",{"k":"v"},function(data){ });//请求路径、传到服务器的数据、回调函数AJAX:
js
$.ajax(1.txt,{
"type":"get",//请求路径、请求类型
"data":{"k":v }, //传到服务器的数据
"success":function(data){},//回调函数
"error":function(xhr,textStatus,errorThrown){}//错误时的回调
},{})4.6 表单序列化
表单序列化:把表单信息序列化成一个字符串。
Serialize:把form的表单信息转换成以URL 编码的字符串。
$("form").serialize()