jQuery基础

jQuery基础

一,jQuery是什么?

1:jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。

2:Query是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE!

3:它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器

4:jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。

5:jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

二,jQuery对象是什么?

 

jQuery 对象就是通过jQuery包装DOM对象后产生的对象。jQuery 对象是 jQuery 独有的如果一个对象是 jQuery 对象那么它就可以使用 jQuery 里的方法: $(“#test”).html();

$("p")[0]:jquery对象转为dom对象      
$("p").html() 等价于 $("p")[0].innerHTML

三,jQuery选择器

1:基本选择器

$("*"),$("#id"),$(".class"),$("标签名"),$(".class,p,div")

 2:层级选择器

1:$("ancestor descendant"):匹配 ancestor 下所有的后代 descendant 元素(descendant :用以匹配元素的选择器,并且它是第一个选择器的后代元素)
2:$("parent > child"):匹配 parent 下所有的子代 child 元素(child :用以匹配元素的选择器,并且它是第一个选择器的子元素)
3:$("prev + next"):匹配紧挨着 prev 的 next 元素(next :一个有效选择器并且紧接着第一个选择器)
4:$("prev ~ siblings"):匹配 prev 元素之后的所有 siblings 元素(siblings :一个选择器,并且它作为第一个选择器的同辈)

 3:属性选择器

1:$("[属性名='name']"):匹配满足属性名=name的元素
例:$("[class='div1']").css("color", "red");

2:$("[属性名='name1'][自定义属性名='name2']"):配满足属性名=name1的元素,自定义属性名=name2的元素
例:$("[class='div1'][kelvin='111']").css("color", "red");

 4:基本筛选器

1:$("li:first") : 匹配 li 元素的第一个
2:$("li:first") : 匹配 li 元素的最后一个
3:$("li:eq(2)") : 匹配 li 元素下标为2的 li 元素
4:$("li:even") : 匹配 li 元素下标为偶数的 li 元素
5:$("li:odd") : 匹配 li 元素下标为奇数的 li 元素
6:$("li:gt(1)") : 匹配 li 元素下标大于1的 li 元素

 5:表单选择器

$("[type='name']")----->$(":name")         **只适用于input标签  : $("input:checked")

 6:过滤筛选器

1:$("li").eq(2)  等价于 $("li:eq(2)")
2:$("li").first()  等价于 $("li:first")
3:$("ul li").hasclass("name") :找到 ul 下的 li 元素class值为 name 的 li 元素

 7:查找筛选器

1.1:$("parent").children("child"):匹配 parent 的子代 child     
1.2:$("parent").find("child")  :匹配 parent 的后代 child  

2.1:$("parent").next()  :匹配紧挨着 parent 的下一个同级元素
2.2:$("parent").nextAll()   :匹配 parent 下的所有同级元素
2.3:$("parent").nextUntil(指定位置)  :匹配从 parent 到 指定位置 的区间(不包括头尾)元素
                           
3.1:$("parent").prev()    :匹配紧挨着 parent 的上一个同级元素
3.2:$("parent").prevAll()    :匹配 parent 上的所有同级元素
3.3:$("parent").prevUntil(指定位置) :匹配从 parent 到 指定位置 的区间(不包括头尾)元素
                        
4.1:$("child").parent()  :匹配 child 的第一级父元素
4.2:$("child").parents()    :匹配 child 的所有父级元素对象并组成一个数组
4.3:$("child").parentUntil(指定位置)   :匹配 child 从第一级父级元素到指定位置父级元素并组成一个数组(不包括最后一个父级元素)

5:$("div").siblings() :匹配 div 的所有兄弟元素(div上下都包括)

 四,元素处理

1:属性操作

------------属性--------------
$("").attr(); 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
$("").removeAttr();
$("").prop();  对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性
$("").removeProp();
-----------CSS类-------------
$("").addClass(class|fn)
$("").removeClass([class|fn])
-----------HTML代码/文本/值-------------
$("").html([val|fn])
$("").text([val|fn])
$("").val([val|fn|arr])
---------------------------
$("").css(属性名,属性值)

2: 文档处理

//创建一个标签对象
    $("<p>")

//内部插入
    $("").append(content|fn)      ----->$("p").append("<b>Hello</b>");
    $("").appendTo(content)       ----->$("p").appendTo("div");
    $("").prepend(content|fn)     ----->$("p").prepend("<b>Hello</b>");
    $("").prependTo(content)      ----->$("p").prependTo("#foo");

//外部插入
    $("").after(content|fn)       ----->$("p").after("<b>Hello</b>");
    $("").before(content|fn)      ----->$("p").before("<b>Hello</b>");
    $("").insertAfter(content)    ----->$("p").insertAfter("#foo");
    $("").insertBefore(content)   ----->$("p").insertBefore("#foo");

//替换
    $("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>");

//删除
    $("").empty()
    $("").remove([expr])

//复制
    $("").clone([Even[,deepEven]])

 3:css操作

CSS
       $("").css(name|pro|[,val|fn])
位置
        $("").offset([coordinates])
        $("").position()
        $("").scrollTop([val])
        $("").scrollLeft([val])
尺寸
        $("").height([val|fn])  :元素本身的高度
        $("").width([val|fn])  :元素本身的宽度
        $("").innerHeight()  :元素本身高度+内边距的高度
        $("").innerWidth()  :元素本身宽度+内边距的宽度
        $("").outerHeight([soptions])  :元素本身高度+内边距的高度+border宽度+(margin)
        $("").outerWidth([options])  :元素本身宽度+内边距的宽度+border宽度+(margin)

 五,事件处理

页面载入
    ready(fn)  **当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
    方式1:$(document).ready(function(){}) 
    方式2:$(function(){})

事件处理
    $("").on(eve,[selector],[data],fn)  // 在选择元素上绑定一个或多个事件的事件处理函数。
    **  .on的selector参数是筛选出调用.on方法的dom元素的指定子元素,如:
    **  $('ul').on('click', 'li', function(){console.log('click');})就是筛选出ul下的li给其绑定
    **  click事件;

    [selector]参数的好处:
        好处在于.on方法为动态添加的元素也能绑上指定事件;如:
        **$('ul li').on('click', function(){console.log('click');})的绑定方式和
        **$('ul li').bind('click', function(){console.log('click');})一样;我通过js给ul添加了一个
        **li:$('ul').append('<li>js new li<li>');这个新加的li是不会被绑上click事件的
        **但是用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,然后动态添加
        **li:$('ul').append('<li>js new li<li>');这个新生成的li被绑上了click事件
    
    [data]参数的调用:
             function myHandler(event) {
                  alert(event.data.foo);
              }
             $("li").on("click", {foo: "bar"}, myHandler)

 六,效果

1:基本

方法1:show([speed,[easing],[fn]]):

方法2:hide([speed,[easing],[fn]])

方法3:toggle([speed],[easing],[fn])

speed: 隐藏/显示 效果的速度。默认是 "0"毫秒。可能的值:slow,normal,fast。"

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

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

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>基本效果</title>
 6     <style>
 7         div {
 8             width: 200px;
 9             height: 200px;
10             background-color: green;
11         }
12     </style>
13 </head>
14 <body>
15 <button onclick="show()">出现</button>
16 <button onclick="hide()">消失</button>
17 <button onclick="toggle()">切换</button>
18 <div></div>
19 <script src="js/jquery-1.11.0.js"></script>
20 <script>
21     function show() {
22         $("div").show(1000);
23     }
24 
25     function hide() {
26         $("div").hide(1000);
27     }
28 
29     function toggle() {
30         $("div").toggle(1000);
31     }
32 </script>
33 </body>
34 </html>
基本效果

2:滑动

方法1:slideDown([speed],[easing],[fn])

 

方法2:slideUp([speed,[easing],[fn]])

 

方法3:slideToggle([speed],[easing],[fn])

 

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

 

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

 

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

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>基本效果</title>
 6     <style>
 7         div {
 8             width: 200px;
 9             height: 200px;
10             background-color: green;
11         }
12     </style>
13 </head>
14 <body>
15 <button onclick="show()">出现</button>
16 <button onclick="hide()">消失</button>
17 <button onclick="toggle()">切换</button>
18 <div></div>
19 <script src="js/jquery-1.11.0.js"></script>
20 <script>
21     function show() {
22         $("div").slideDown(1000);
23     }
24 
25     function hide() {
26         $("div").slideUp(1000);
27     }
28 
29     function toggle() {
30         $("div").slideToggle(1000);
31     }
32 </script>
33 </body>
34 </html>
滑动效果

3:淡入淡出

方法1:fadeIn([speed],[easing],[fn])

方法2:fadeOut([speed],[easing],[fn])

方法3:fadeToggle([speed,[easing],[fn]])

方法4:fadeTo([[speed],opacity,[easing],[fn]])

 

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

 

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

 

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

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>淡入淡出效果</title>
 6     <style>
 7         div {
 8             width: 200px;
 9             height: 200px;
10             background-color: green;
11         }
12     </style>
13 </head>
14 <body>
15 <button onclick="show()">出现</button>
16 <button onclick="hide()">消失</button>
17 <button onclick="toggle()">切换</button>
18 <button onclick="toggleTo()">渐变透明度至</button>
19 <div></div>
20 <script src="js/jquery-1.11.0.js"></script>
21 <script>
22     function show() {
23         $("div").fadeIn(1000);
24     }
25 
26     function hide() {
27         $("div").fadeOut(1000);
28     }
29 
30     function toggle() {
31         $("div").fadeToggle(1000);
32     }
33 
34     function toggleTo() {
35         $("div").fadeTo(1000, 0.3);
36     }
37 </script>
38 </body>
39 </html>
淡入淡出效果

七,扩展方法(插件机制)

1:jQuery插件机制核心方法

<script>
    $.extend(object)      //为JQuery 添加一个静态方法。
    $.fn.extend(object)   //为JQuery实例添加一个方法。

    jQuery.extend({
          min: function(a, b) { return a < b ? a : b; },
          max: function(a, b) { return a > b ? a : b; }
        });
    console.log($.min(3,4));

-----------------------------------------------------------------------

    $.fn.extend({
        "print":function(){
            for (var i=0;i<this.length;i++){
                console.log($(this)[i].innerHTML)
            }
        }
    });

    $("p").print();
</script>

 2:定义作用域

  定义一个JQuery插件,首先要把这个插件的代码放在一个不受外界干扰的地方。如果用专业些的话来说就是要为这个插件定义私有作用域。外部的代码不能直接访问插件内部的代码。插件内部的代码不污染全局变量。在一定的作用上解耦了插件与运行环境的依赖。

(function(a,b){return a+b})(3,5)
(function ($) { })(jQuery);
相当于:
var fn = function ($) { };
fn(jQuery);

 3:默认参数

  定义了jQuery插件之后,如果希望某些参数具有默认值,那么可以以这种方式来指定。

step01 定义JQuery的作用域
(function ($) {
    //step03-a 插件的默认值属性
    var defaults = {
        prevId: 'prevBtn',
        prevText: 'Previous',
        nextId: 'nextBtn',
        nextText: 'Next'
        //……
    };
    //step06-a 在插件里定义方法
    var showLink = function (obj) {
        $(obj).append(function () { return "(" + $(obj).attr("href") + ")" });
    }

    //step02 插件的扩展方法名称
    $.fn.easySlider = function (options) {
        //step03-b 合并用户自定义属性,默认属性
        var options = $.extend(defaults, options);
        //step4 支持JQuery选择器
        //step5 支持链式调用
        return this.each(function () {
            //step06-b 在插件里定义方法
            showLink(this);
        });
    }
})(jQuery);

 

posted @ 2019-03-06 14:11  佛祖让我来巡山  阅读(167)  评论(0编辑  收藏  举报

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网