一、历史由来   

    jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。

二、jQuery基础(http://www.php100.com/manual/jquery/index.html)

1、代码风格

在jQuery程序中,都是以美元符号“$”来起始的,而“$”就是jQuery中最重要且独有的对象:jQuery对象

 $(function (){});                 //执行一个匿名函数
 $("#box");                       //对id="box"的标签选择
 $("#box").css("color","red");   //执行功能函数

2、代码位置

将写的jquery代码放到html中head标签里,必须把代码放到匿名函数中(DOM执行完后执行)

将写的jquery代码放到html中body标签最下面

3、

三、选择器

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

1、基本选择器

1>elememt--------------->根据给定的元素标签名匹配所有元素---------------------->$("div")

2>#id--------------------->根据给定的ID匹配一个元素-------------------------->$("#id")

3>.class------------------>根据给定的css类名匹配元素------------------------->$(".class")

4>*----------------------->匹配所有元素------------------------------------->$("*")

2、层级选择器

1>selector1,selectorN------>匹配多个标签------------------------------>$("div,span")

2>ancestor descendant------>给定元素下所有的后代元素(儿子以及孙子)------->$("div  span")

3>parent > child----------->给定元素下所有的子代元素(只能是儿子)-------->$("div>span")

4>pren+next---------------->匹配所有跟在 选定标签后面的一个指定元素-------->$("div+span")(只能是他后面的一个)

5>prev ~ siblings---------->匹配 prev 元素之后的所有 siblings 元素------->$("div~span")(只能是之后的所有兄弟元素,他前面的匹配不到)

3、基本筛选器

1>:first----------------->获取配到所有元素的第一个元素------------------->$("li:first")

2>:last------------------>获取配到所有元素的第后一个元素----------------->$("li:last")

3>:not(selector)-------->去除所有与给定选择器匹配的元素------------------>$("input:not(:checked)")

4>:even----------------->匹配所有索引值为偶数的元素,从0开始计数----------->$("li:even")

5>:odd------------------>匹配所有索引值为偶数的元素,从0开始计数----------->$("li:odd")

6>:eq(index)----------->匹配一个给定索引值的元素------------------------>$("li:eq(3)")

7>:gt(index)----------->匹配所有大于给定索引值的元素--------------------->$("li:gt(3)")

8>:lt(index)----------->匹配所有小于给定索引值的元素--------------------->$("li:lt(3)")

9>:header-------------->匹配如 h1, h2, h3之类的标题元素----------------->$(":header")

10>:contains(text)----->匹配包含给定文本的元素-------------------------->$("div:contains('join')")(匹配一个文本内容为join的div标签)

11>:empty-------------->匹配所有不包含子元素或者文本的空元素--------------->$("li:empty")

12>:parent------------->匹配所有包含子元素或者文本的元素------------------>$("li:parent ")

13>:hidden------------->匹配所有不可见元素,或者type为hidden的元素-------->$("div:hidden")

14>:visible------------>匹配所有的可见元素------------------------------>$("div:visable")

4 、属性选择器    

1>[attribute]----------->匹配包含给定属性的元素----------------------------->$("div[id]")

2>[attribute=value]----->匹配给定的属性是某个特定值的元素-------------------->$("div[id='l1']")(注意这里id = 'xx'要用单引号)

3>[attribute^=value]---->匹配给定的属性是以某些值开始的元素------------------->$("div[id^='l1']")(id相同,属性值必须以xxx开头)

4>[attribute$=value]---->匹配给定的属性是以某些值结尾的元素------------------->$("div[id$='l1']")

5>[attribute!=value]---->匹配所有不含有指定的属性,或者属性不等于特定值的元素----->$("div[id!='l1']")

6>[attribute*=value]---->匹配给定的属性中包含某些值的元素--------------------->$("div[id*='l1']")(表示属性值中包含li部分)

5、 表单选择器

$("[type='text']")-------->$(":text")           注意只适用于input标签

<form>
  <input type="text" />
  <input type="checkbox" />
  <input type="radio" />
  <input type="image" />
  <input type="file" />
  <input type="submit" />
  <input type="reset" />
  <input type="password" />
  <input type="button" />
  <select><option/></select>
  <textarea></textarea>
  <button></button>
</form>

四、 筛选器

1> eq(index|-index)------------->获取当前链式操作中第N个jQuery对象----------------------------->$("li").eq(1)(当参数大于等于0时为正向选取,当参数为负数时为反向选取)

2> first()---------------------->获取第一个元素---------------------------------------------->$("li").first()

3> last()----------------------->获取最后一个元素-------------------------------------------->$("li").last()

4> filter(expr|obj|ele|fn)------>筛选出与指定表达式匹配的元素集合------------------------------->$("div").filter(".c1")(保留带有c1属性值类的元素)

5> children([expr])------------->一个元素的所有子元素的元素集合-------------------------------->$("div").children()(匹配所有div的子元素)

6> find(expr|obj|ele)---------->在父标签下寻找子标签------------------------>$("div").find("span")(从所有的段落开始,进一步搜索下面的span元素。与$("p span")相同)

7> next([expr])---------------->匹配的元素后面紧邻的一个同辈元素------------------------------->$("div").next()

8> nextAll([expr])------------->查找当前元素之后所有的同辈元素--------------------------------->$("div").nextAll()(括号中是用来过滤的表达式)

9> nextUntil([exp|ele][,fil])-->查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止---------->$("div").nextUntil("xxx")(不算开头和结尾)

10>prev([expr])---------------->匹配的元素前面紧邻的一个同辈元素-------------------------------->$(".c3").prev()

11>prevAll([expr])--------->查找当前元素之前所有的同辈元素-------------------------------------->$(".c3").prevAll()

12>prevUntil([exp|ele][,fil])->查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止-->$("div").prevUntil("xxx")(不算开头和结尾)

13>parent([expr])-------->匹配元素的唯一父元素的元素集合------------------------------------------->$(".c1").parent()

14>parents([expr])---------->匹配元素的祖先元素的元素集合----------------------------------------->$(".c1").parent()(匹配元素的父级,爷级.....最后是body和HTML)

15>parentsUntil([expr|element][,filter])----查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止---->$(".c1").parentsUntil(".c4")

16>siblings([expr])--------->匹配所有同辈标签(不算自己)------------------------------------------->$("div").siblings()

五、属性操作

1、HTML代码、文本、值操作

1> html([val|fn])------------------>获取匹配元素的html内容(文本和标签俩部分)------------->$("div").html()

2> text([val|fn])------------------>获取匹配元素的文本内容(只有文本部分)----------------->$("div").text()

3> val([val|fn|arr])--------------->获取文本框中的值----------------------------------->$(":text").val()

2、属性

1> attr(name|properties|key,value|fn)----->设置或返回被选元素的属性值---------------------->$("div').attr("属性名")

(attr()中一个值是获取属性值,俩值是设置属性)

2> removeAttr(name)---------------------->从每一个匹配的元素中删除一个属性---------------->$("div').removeAttr("属性名")

(存在一个bug,删除属性后无法恢复,尽量不要用)

3>prop(name|properties|key,value|fn)----->设置或返回被选元素的属性值---------------------->$("div').prop("属性名")

4> removeProp(name)---------------------->从每一个匹配的元素中删除一个属性---------------->$("div').removeProp("属性名")

3、Css类

1> addClass(class|fn)------------------------>为匹配到的元素添加指定的类名------------------->$("div").addClass("hide")

2> removeClass([class|fn])------------------->为匹配到的元素移除指定的类名------------------->$("div").removeClass("hide")

3> toggleClass(class|fn[,sw])---------------->如果存在(不存在)就删除(添加)一个类----------->$("div").toggleClass("hide")

六、Css操作

1、基础操作

 css(name|pro|[,val|fn])------------------>为匹配元素设置样式属性------------------------->$(".c1").css({"color":"red","background":"yellow"})

(如果css括号中一个值,直接写css("xxx","xxx"),多个属性值时css({"xxx":"xxx","yyy":"yyy"}))

2、位置

1> offset([coordinates])-------------------->获取匹配元素在当前视口的相对偏移--------------------->$(".c1").offset()

(返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效)

2> position()-------------------------------->获取匹配元素相对父元素的偏移----------------------->$(".c1").position()

Object {top: xx, left: xx}

3>scrollTop([val])-------------------------->获取匹配元素相对滚动条顶部的偏移--------------------->$("div").scroTop()

4> scrollLeft([val])------------------------->获取匹配元素相对滚动条左侧的偏移--------------------->$("div").scrollLeft()

3、尺寸

1> height([val|fn])------------------------------>取得匹配元素本身的高度值(px)----------------------->$("p").height()

2> width([val|fn])------------------------------->取得匹配元素本身的宽度值(px)----------------------->$("p").width()

3> innerHeight()--------------------------------->获取匹配元素内部区域高度(包括补白、不包括边框)--->$("p").innerHeight()

4> innerWidth()---------------------------------->获取匹配元素内部区域宽度(包括补白、不包括边框)---->$("p").innerWidth()

5> outerHeight([options])----------------------->获取匹配元素外部高度(默认包括补白和边框)---------->$("p").outerHeight()

6> outerWidth([options])------------------------>获取匹配元素外部宽度(默认包括补白和边框)---------->$("p").outerWidth()

 七、文档处理

1、内部插入

append和prepend一样,前后匹配标签必须加$符号,appendTo和prependTo一样,后面的标签加不加$都行;

1> append(content|fn)--------------------->向匹配到的元素内部后面追加内容----------------------->$(".c1").append("<div>123</div>")

 ----------把后面的东西添加到c1标签中--------------------------------------------------------->$(".c1").append($(".c2"))

2> appendTo(content)---------------------->把所有匹配的元素追加到另一个指定的元素元素集合中-------->$(".c1").appendTo(".c2")(加到指定集合中后,原来的不存在)

3> prepend(content))---------------------->向匹配到的元素内部前面追加内容----------------------->$(".c1").prepend("<div>123</div>")

4> prependTo(content)-------------------->把所有匹配的元素前置到另一个、指定的元素元素集合中------->$(".c2").prependTo($(".c1"))

2、外部插入

after和before一样,前后匹配标签必须加$符号,insertAfter这个方法是颠倒了常规的$(A).after(B)的操作,即不是把B插入到A后面,而是把A插入到B后面

1> after(content|fn)-------------------------->在匹配的元素之后插入内容---------------------->$(".c1").after($(".c2"))

2> before(content|fn)------------------------->在匹配的元素之前插入内容---------------------->$(".c1").before($(".c2"))

3> insertAfter(content)----------------------->把所有匹配的元素插入到指定元素后面-------------->$(".c1").insertAfter(".c2")
4> insertBefore(content)---------------------->把所有匹配的元素插入到指定元素前面-------------->$(".c1").insertBefore(".c2")

3、替换

1> replaceWith(content|fn)---------------->将所有匹配的元素替换成指定的HTML或DOM元素---------->$(".c1").replaceWith("<div>9999</div>")

2> replaceAll(selector)------------------->结果相当于把replaceWith的前后标签反过来写---------->$("<div>9999</div>").replaceAll(".c1")

4、删除

1> empty()------------------------->删除匹配元素中所有的子节点(标签及内容)------------->$(".c1").empty()---->删除中间一切

2> remove([expr])------------------>删除匹配到的元素-------------------------------->$("p").remove()---->把自己删除

3> detach([expr])------------------>删除匹配到的元素-------------------------------->$("p").detach()----->把自己删除

这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

5、复制

clone([Even[,deepEven]])--------------------克隆匹配的DOM元素并且选中这些克隆的副本

八、事件 

1、页面载入

当DOM载入后才执行的函数

$(document).ready(function(){
  // 在这里写你的代码...
});

$(document).ready() 的简写,同时内部的 jQuery 代码依然使用 $ 作为别名,而不管全局的 $ 为何

$(function($) {
  // 你可以在这里继续使用$作为别名...
});

2、事件

1> focus([[data],fn])--------------------->当元素获得焦点时,触发 focus 事件

2> focusin([data],fn)--------------------->当元素获得焦点时,触发 focusin 事件,focusin事件跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况

3> focusout([data],fn)-------------------->当元素失去焦点时触发 focusout 事件,focusout事件跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况

4> blur([[data],fn])---------------------->当元素失去焦点时触发 blur 事件

5> change([[data],fn])------------------->当元素的值发生改变时,会发生 change 事件

6> click([[data],fn])-------------------->当点击时触发事件

7> dblclick([[data],fn])----------------->当双击元素时,会发生 dblclick 事件

8> error([[data],fn])------------------->当元素遇到错误(没有正确载入)时,发生 error 事件

9> keydown([[data],fn])----------------->当键盘或按钮被按下时,发生 keydown 事件

10> keyup([[data],fn])------------------>当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上

11> mousedown([[data],fn])-------------->当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件

12> mouseleave([[data],fn])------------>当鼠标指针离开元素时,会发生 mouseleave 事件。该事件大多数时候会与mouseenter 事件一起使用

13> resize([[data],fn])---------------->当调整浏览器窗口的大小时,发生 resize 事件

14> scroll([[data],fn])---------------->当用户滚动指定的元素时,会发生 scroll 事件

15> select([[data],fn])---------------->当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件

16> submit([[data],fn])--------------->当提交表单时,会发生 submit 事件。该事件只适用于表单元素。

17> unload([[data],fn])--------------->在当用户离开页面时,会发生 unload 事件

3、绑定事件事件切换

1> $("p").click(function(){})         //获取某一标签后直接在其后面绑定事件

<body>
    <div class="c1">点我</div>
    <script>
        $(".c1").click(function () {
            alert("哈哈")
        })
    </script>
</body>

2> $(selector).bind(event,data,function)   //其后绑定的事件必须是字符串形式,而且其后不加括号         ||    unbind(type,[data|fn]])

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

          单事件处理:例如 $(selector).bind("click",data,function);

          多事件处理:1.利用空格分隔多事件,例如 $(selector).bind("click dbclick mouseout",data,function);

                2.利用大括号灵活定义多事件,例如 $(selector).bind({event1:function, event2:function, ...}) 

                3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

                 大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

  data可选;需要传递的参数;

  function必需;当绑定事件发生时,需要执行的函数;

<body>
    <div class="c1">点我</div>
    <script>
        $(".c1").bind("click",function () {
            alert("ok")
        })
    </script>
</body>

3>$(selector).live(event,data,function)

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

      单事件处理:例如 $(selector).live("click",data,function);

      多事件处理:1.利用空格分隔多事件,例如 $(selector).live("click dbclick mouseout",data,function);

            2.利用大括号灵活定义多事件,例如 $(selector).live({event1:function, event2:function, ...}) 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

  data:可选;需要传递的参数;

  function:必需;当绑定事件发生时,需要执行的函数;

 

4>$(selector).on(event,childselector,data,function)                         ||                         off(events,[selector],[fn])

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

      单事件处理:例如 $(selector).on("click",childselector,data,function);

      多事件处理:1.利用空格分隔多事件,例如 $(selector).on("click dbclick mouseout",childseletor,data,function);

            2.利用大括号灵活定义多事件,例如 $(selector).on({event1:function, event2:function, ...},childselector); 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数; 

  childSelector: 可选;需要添加事件处理程序的元素,一般为selector的子元素;    

  data:可选;需要传递的参数;

  function:必需;当绑定事件发生时,需要执行的函数;

<body>
    <div class="c1">点我</div>
    <script>
        $(".c1").bind("click",function () {
            alert("ok")
        })
    </script>
</body>

5>$(selector).delegate(childSelector,event,data,function)   // 委托绑定使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)       ||    undelegate([selector,[type],fn])

   childSelector: 必需项;需要添加事件处理程序的元素,一般为selector的子元素;

  event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

      单事件处理:例如 $(selector).delegate(childselector,"click",data,function);

      多事件处理:1.利用空格分隔多事件,例如 $(selector).delegate(childselector,"click dbclick mouseout",data,function);

            2.利用大括号灵活定义多事件,例如 $(selector).delegate(childselector,{event1:function, event2:function, ...}) 

            3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

               大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;     

  data:可选;需要传递的参数;

  function:必需;当绑定事件发生时,需要执行的函数;

//$("ul").delegate("li","click",function(){})  ----------->委托ul下面的li,使ul下面的li(已经有的或将要有的,都绑定某一个事件)


<html> <head> <script type="text/javascript" src="jquery-1.9.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("div").delegate("p","click",function(){ //这里使用事件委托的形式,意思是包含div下的已经创建和将要创建的标签都具有这个效果 $(this).slideToggle(); //这里如果我们换成其他的绑定方式,那以后创建的标签就没有这种效果了 }); $("button").click(function(){ $("<p>这是一个新段落</p>").insertAfter("button"); }); }); </script> </head> <body> <div style="background-color:yellow"> <p>这是一个段落</p> <p>请点击任意一个 p 元素,它会消失。包括本段落。</p> <button>在本按钮后面插入一个新的 p 元素</button> </div> </body> </html>

4、事件切换

1>  hover([over,]out)      当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数

相当于mouseover和mouseout一起用的效果

<body>
    <div class="c1">11111</div>
    <button class="c2">按钮</button>
    <script>
        $(".c2").hover(function () {
            $(".c1").hide()
        },function () {
            $(".c1").show()
        })
//        $(".c2").mouseover(function () {
//            $(".c1").hide()
//        })
//        $(".c2").mouseout(function () {
//            $(".c1").show()
//        })
    </script>
</body>

2>   toggle([speed],[easing],[fn])  如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的

<body>
    <div class="c1">11111</div>
    <button class="c2">按钮</button>
    <script>
        $(".c2").click(function () {
            $(".c1").toggle(1000)
        })
    </script>
</body>

九、动画 

1、基本

1>  show([speed,[easing],[fn]])

2>  hide([speed,[easing],[fn]])

speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)

easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"

fn:在动画完成时执行的函数,每个元素执行一次

<body>
    <div class="c1">11111</div>
    <button class="c2">按钮1</button>
    <button class="c3">按钮2</button>
    <script>
        $(".c2").click(function () {
            $(".c1").hide(1000,function () {
                alert("haha")
            })
        });
        $(".c3").click(function () {
            $(".c1").show()
        })
    </script>
</body>

2、滑动

1>  slideDown([speed],[easing],[fn])    通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数

2>  slideUp([speed,[easing],[fn]])         通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数

3>  slideToggle([speed],[easing],[fn])  通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-1.9.1.min.js"></script>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: #2459a2;
        }
    </style>
</head>
<body>
    <div class="c1">11111</div>
    <button class="c2">按钮</button>
    <script>
        $(".c2").click(function () {
            $("div").slideUp(1000,function () {
                $("div").slideDown(1000)
            })
        })
    </script>
</body>
</html>

3、淡入淡出

1>  fadeIn([speed],[easing],[fn])     通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数

2>  fadeOut([speed],[easing],[fn])   通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数

3>  fadeTo([[speed],opacity,[easing],[fn]])   把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数

4、自定义效果

1>  animate(params,[speed],[easing],[fn])  用于创建自定义动画的函数

params:一组包含作为动画属性和终值的样式属性和及其值的集合

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-1.9.1.min.js"></script>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: #2459a2;
        }
    </style>
</head>
<body>
    <div class="c1">11111</div>
    <button class="c2">按钮</button>
    <script>
        $(".c2").click(function () {
          $(".c1").animate({
              width: "900px",
              height: "100%",
              fontSize: "10em"
          }, 1000 );})
    </script>
</body>
</html>

2>   stop([clearQueue],[jumpToEnd])          停止所有在指定元素上正在运行的动画

3>   delay(duration,[queueName])              设置一个延时来推迟执行队列中之后的项目

4>   finish( [queue ] )                                停止当前正在运行的动画,删除所有排队的动画,并完成匹配元素所有的动画

十、循环的俩种方式

each(callback)

1>  $("匹配一个可迭代的元素集合").each(function(){})

2> $.each("可迭代的元素集合",function(){})

return false; 表示退出当前循环

   <script>
       $.each(["a","b","c"],function (x,y) {         //其中的x为获取的索引位置,y为按索引获取的对应元素
           console.log(x,y)
       })
        $(["a","b","c"]).each(function (x,y) {
            console.log(x,y)
        })
    </script>

十一、扩展的俩种方式

(我们需要实现某种方法,而jquery库中没有的功能,我们就可以通过自己扩展一个功能)

1>jQuery.extend(object)   (extend()中加的是一个字典,其中加方法,方法与方法之间用逗号隔开)

  调用的时候和    $.each("可迭代的元素集合",function(){})一样

    <script>
        jQuery.extend({
            xxxx:function (arg) {
                $(arg).text()
            },
            xxxxx:function (arg) {
                $(arg).text()
            }
        })
    </script>

2> jQuery.fn.extend(object)(extend()中加的是一个字典,其中加方法,方法与方法之间用逗号隔开)

  调用的时候和    $("匹配一个可迭代的元素集合").each(function(){})一样

    <script>
        jQuery.fn.extend({
            xxx:function () {
              $(this).text();
                xxxxxxx
              return  xxxxxxx  
            },
            xxxx:function () {
                 $(this).text();
                xxxxxxx
              return  xxxxxxx  
            }
        })
    </script>

 

posted on 2016-07-18 15:35  23云恋49枫  阅读(308)  评论(0编辑  收藏  举报