六、动画效果

6.1、基本

hide([speed,[fn]])隐藏显示的元素
speed: 三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000);
fn:在动画完成时执行的函数。
show([speed,[fn]])显示隐藏的匹配元素
speed: 三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000);
fn:在动画完成时执行的函数。 
toggle
用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。

6.2、滑动(卷帘门)

注意:必须对图片设置width才可以实现卷帘门效果
slideDown([speed],[fn])显示
通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数。
slideUp([speed,[fn]])隐藏
通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。
slideToggle([speed],[fn])切换
通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数

6.3淡入淡出

fadeIn([speed],[fn])淡入
通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数。
fadeOut([speed],[fn])淡出
通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。
fadeToggle([speed,[fn]]) 反复点击,实现反复的淡入淡出效果,可以设置定时器
fadeTo([[speed],opacity,[fn]])       调整到指定的不透明度,0全透明,1不透明

6.4自定义动画

animate(params,[speed],[easing],[fn])      //(阿尼马特,好记而已)
params:一组包含作为动画属性和终值的样式属性和及其值的集合
speed:三种预定速度之一的字符串("slow","normal", or"fast")或表示动画时长的毫秒数值(如:1000)
easing:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"linear"和"swing".
fn:在动画完成时执行的函数,每个元素执行一次。
animate原理是修改css,不能直接改背景颜色


七、文档操作

7.1 节点追加

7.1.1内部追加

append(content)
向匹配的元素内部追加内容。
appendTo(content)
把匹配的元素追加到另一个指定的元素集合中
prepend(content)
内容前置到匹配的元素内部;
prependTo(content)
把匹配的元素前置到另一个、指定的元素集合中

7.1.2 外部追加

after(content)
在匹配的元素之后插入内容。
before(content)
在匹配的元素之前插入内容。
insertAfter(content)
把匹配的元素插入到另一个、指定的元素集合的后面。
insertBefore(content)
把匹配的元素插入到另一个、指定的元素元素集合的前面。

7.2 删除

empty()
删除匹配的元素集合中所有的子节点。标签保留
remove([expr])
从DOM中删除所有匹配的元素。将标签也一同删除

7.3 复制(克隆)

clone([Even])
克隆匹配的DOM元素
Even:一个布尔值(true或者false)指示事件处理函数是否会被复制。

7.4 替换

html代码:

<p>Hello</p><p>cruel</p><p>World</p>

jQuery代码:

$("<b>Paragraph.</b>").replaceAll("p");
$("p").replaceWith("<b>Paragraph.</b>");

结果:

<b>Paragraph. </b><b>Paragraph.</b><b>Paragraph. </b>

replaceAll(content)  主动替换,用匹配的元素替换掉所有 selector匹配到的元素。

replaceWith(content) 被动替换

将所有匹配的元素替换成指定的HTML或DOM元素。

html([val])

val 有值,则用于设定HTML内容的值,没有则获取内容值;

7.5 包裹

wrap(html|ele|fn)
把所有匹配的元素用其他元素的结构化标记包裹起来。
unwrap()
移出选中元素的父元素
wrapAll(html|ele)
将所有匹配的元素用单个元素包裹起来
wrapInner(html|ele|fn)
将每一个匹配的元素的子内容(包括文本节点)用一个HTML结构包裹起来

7.6 查找

问题及效果:

将选择器以jq方法调用形式实现;

知识点:

eq(index) :根据元素的index索引来查找元素
filter(expr) :筛选操作,$(‘div’).filter(‘.cls1’);
not(expr) :匹配除指定选择器以外的其他元素
children([expr]) :获取当前元素下的所有子元素
find(expr) :获取当前元素下的所有后代元素
next([expr]) :获取当前元素下紧邻的下一个元素
prev([expr]) :获取当前元素上紧邻的上一个元素
parent([expr]) :获取当前元素的父元素
siblings([expre]) :获取当前元素的所有同级兄弟元素


八、插件

8.1 为元素扩展新方法

$.fn.extend(ob)或者 $、jQuery.fn.extend(ob)
ob:JS对象         如:{name:‘Joe’}

8.2 扩展jq对象本身

jQuery.extend(ob)或者$.extend(ob)

8.3 each 方法

each(callback)

以每一个匹配的元素作为上下文来执行一个函数。


九、jQuery中的ajax

9.1 ajax 的底层实现

$.ajax(obj)

对象的参数设置及含义:

async:布尔类型,代表是否异步,true代表异步,false同步,默认为true

cache:是否缓存,布尔类型,true代表缓存,false代表不缓存,默认为true

complete:当Ajax状态码(readyState)为4的时候所触发的回调函数

contentType:发送信息至服务器时内容编码类型;(默认:"application/x-www-form-urlencoded")

data:要求是一个字符串格式,Ajax发送时所传递的数据

dataType:期待的返回值类型,可以是text,xml,json,默认为text类型

success:当Ajax状态码为4且响应状态码为200时所触发的回调函数

type:Ajax发送网络请求的方式,(默认: "GET");

url:请求的url地址


//get请求
$.ajax({
	url:'9-2.php?id=11',
	success:function(data){
	alert(data);
	}
});
 
//POST请求及同步异步
$.ajax({
	url:'9-2.php',
	type:'post',
	data:'id=1111',
	success:function(data){
	alert(data);
},
// async:false,
});


9.2、ajax 的高层实现

9.2.1 GET 应用

基本语法:

$.get(url, [data], [callback], [type])

url:待载入页面的URL地址

data:待发送Key/value参数。

callback:载入成功时回调函数。

type:返回内容格式,xml, html, script, json, text, _default。

案例代码:

<script>
  $('#btu').click(function(){
    $.get('9-2.php',function(data){
    	alert(data.a);
    },'json');
  });
</script>

但是注意:IE浏览器存在缓存问题;

解决缓存问题修改:

<script>
  $('#btu').click(function(){
    var da = {_:new Date().getTime()};
    $.get('9-2.php',da,function(data){
    	alert(data.a);
    },'json');
  });
</script>


9.2.2 POST 应用

$.post(url, [data], [callback], [type])

url:发送请求地址。

data:待发送Key/value参数。

callback:发送成功时回调函数。

type:返回内容格式,xml, html, script, json, text, _default。

案例代码:

<script>
  $('#btu').click(function(){
    $.post('9-2.php',
    {id:'11'},
    function(data){
    alert(data.a);
    },'json');
  });
</script>


十、jQuery中的跨域问题

Ajax技术受到浏览器同源策略的限制,禁止从一个域上向另外一个域发送请求。

前端jq跨域的三种用法

<script>
  $('#btu').click(function(){
  //$.ajax 方法的jsonp跨域
  $.ajax({
    url:'http://bbs.com/1.php?fn=?',
    dataType:'jsonp',
    success:function(data){
    alert(data.b);
  }
  });
  //$.get 方法的jsonp跨域
  $.get('http://bbs.com/1.php?fn=?',function(data){
    alert(data.b);
    },'jsonp');
    // $.getJSON 方法的jsonp跨域
    $.getJSON(
    'http://bbs.com/1.php?fn=?',
    function(data){
    alert(data.b);
    },
  );
  });
</script>