001 JQuery (001

[A] JQuery基础

    JQuery:

      1. 一个快速,简洁的JavaScript框架

                   2. 设计宗旨: "write less, do more"

                   3.  JQuery兼容的主流浏览器,如IE6.0+, FF1.5+, Safari2.0+, Opera9.0+


            1. JQuery优点:

                    1. 简化JS的复杂操作

                    2. 不再关心兼容性

            2. JQuery帮助文档

                  官网:https://jquery.com/

            3. JQuery的版本区别:

                  1.0     可以兼容到IE8以下

                  2.0     只兼容IE8以上

                  3.0     目前最新

                  【注】遇到新东西去查文档学

            4. JQuery文件各个版本下载

                    网址:http://www.jq22.com/jquery-info122

            5. JQuery设计思想

                  1. 模拟css选择网页元素

                          【格式】:$("css选择器").css("属性", "属性值")

                      css选择器参考手册: http://www.runoob.com/cssref/css-selectors.html

                  2. 独有表达式选择

                        $("li:first").css("backgroundColor", "red");        第一个li标签

                        $("li:last").css("backgroundColor", "red");         最后一个li标签

                        $("li:even").css("backgroundColor", "red");         偶数位的li标签

                        $("li:odd").css("backgroundColor", "red");          奇数位的li标签

                        $("li:eq(2)").css("backgroundColor", "red");        下标为2的li标签

                  3. 多种筛选方式

                        $("li:eq(2)").css("backgroundColor", "red");        下标为2的li标签

                        或写成:

                            $("li").eq(2).css("backgroundColor", "red");    下标为2的li标签

 

                         $("li.box").css("backgroundColor", "red");          类名为box的li标签

                        或写成:

                            $("li").filter(".box").css("backgroundColor", "red");类名为box的li标签

 

[B] JQuery的写法

                1. 方法函数化

                      示例1:简化页面加载函数

                          $(function(){

                              代码块;

                          })

                          可以替代:

                              window.onload = function(){

                                  代码块;

                              }


                      示例2:简化事件函数

                          $("css样式").onclick = function(){

                              代码块;

                          }

                          可以替代:

                              var oBtn = document.getElementById("id名");

                              oBtn.onclick = function(){

                                  代码块;

                              }

                      【注】在JQ中基本上见不到等于号,所有的复制操作都是函数传参实现的


                2. 链式操作

                      对于同一个目标元素,若有多个事件函数,可以实现链式操作

                      示例:

                          $("#oBtn").onclick = function(){

                              alert("我被点击了");

                          }


                          $("#oBtn").onmouseover = function(){

                              alert("鼠标来了");

                          }


                          $("#oBtn").onmouseout = function(){

                              alert("鼠标离开了");

                          }

                          转化为链式操作:

                              $("#oBtn").onclick = function(){

                                  alert("我被点击了");

                              }.onmouseover = function(){

                                  alert("鼠标来了");

                              }.onmouseout = function(){

                                  alert("鼠标离开了");

                              }

                3. 取值赋值合体

                      即一步实现取值和赋值两步操作

                      示例:获取元素节点内容并赋值

                          $("#div1").html();              

                              // 获取id为div1的节点里的内容,返回值即为内容


                          $("#div1").html("我是替换文本");        

                              // 获取获取id为div1的节点里的内容,并将该内容替换为"我是替换文本"


        【注】JQ与JS的关系

                JQ底层代码是JS,两者可以共存,但是不能混用

                所谓共存,是指语句可以交叉使用

                所谓不能混用,是指一条语句不能同时包含JQ和JQ两种代码

 

[C] JQuery常用方法1

      1. filter   过滤,对已经获取到的网页元素进行过滤

                          示例:

                              $("div").filter(".box").css("width", "100px")

                              // 将选中的div中,把类名为box的元素设置为"width = 100px"

                    2. not      过滤的反义词,即在已经选中的网页元素中去除元素

                          示例:

                              $("div").not(".box").css("width", "100px")

                              // 将选中的div中,把除了类名为box的元素都设置为"width = 100px"

                    3. has      拥有,根据节点的子元素特征,来选择父元素

                          示例:

                              $("div").has(".box").css("width", "100px")

                              // 将选中的div中,把拥有类名为.box的子节点的节点选中

                    4. prev     查找当前兄弟节点中的上一个节点

                     next     查找当前兄弟节点中的下一个节点

                          示例:

                              $("div").prev(".box").css("width", "100px")

                              $("div").next(".box").css("width", "100px")

                    5. find     查找指定条件下的子节点

                          示例:

                              $("div").find("[name=ad]").css("width", "100px")

                    6. index(下标)    获取当前节点在兄弟节点中的下标

                          示例:

                              $("h3").index();            

                                  // 返回值为标签h3在兄弟节点中的下标

                    7. eq(下标)     通过下标获取指定的元素节点

                          示例:

                              $("li").eq(2).css("width", "100px")

                              // 获取下表为2的li标签

                    8. attr         获取和设置行间属性

                          示例:

                              获取行间属性

                                    $("#div").attr("title")

                                        // 返回值为指定节点的title

                              设置/修改行间属性

                                    $(#div).attr("title", "word")

                                        // 将行间属性title修改为"word"

                              一次性修改多个行间属性

                                    $(#div).attr({

                                        title: "word",

                                        class: "xxx"

                                    })

[D] JQuery常用方法2

      1.  addClass()       添加class的某个或多个样式

                       removeClass()    删除class的某个或多个样式

                          示例:

                              $("div1").addClass("box2 box3 box4")

                                  添加class样式,若某个被添加的样式已经存在,测忽略

                              $("div1").removeClass("box3 box4")

                                  删除掉某个class样式,若某个样式不存在,则忽略掉

                    2.  获取节点的宽度

                          width()             width

                          innerWidth()        width + padding 

                          outerWidth()        width + padding + border

                          outerWidth(true)    width + padding + border + margin

                    3.  获取节点的高度

                          height()             height

                          innerheight()        height + padding 

                          outerheight()        height + padding + border

                          outerheight(true)    height + padding + border + margin

                    4.  节点操作(不用事先创建节点)

                          insertBefore()      before()      将某节点插在节点之前

                              $("span").insertBefore("div")

                              // 将span节点插在div节点之前

                          insertAfter()       after()       将某节点插在节点之后

                              $("span").insertAfter("div")

                              // 将span节点插在div节点之后

                          appendTo()          append()      将某节点接到节点的子节点最后

                               $("span").appendTo("div")

                              // 将span节点插在div节点的子节点后面

                          prependTo()         prepend()     将某节点接到节点的子节点首位

                              $("span").prependTo("div")

                              // 将span节点插在div节点的子节点首位

                          remove()                          删除某节点

                              $("span").remove()

                              // 将span节点删除掉

                          【注】insertBefore()和before()对比

                              1. 同样的效果,表达方式不一样

                                  示例:

                                      $("span").insertBefore("div")

                                          // 将span节点插在div节点之前

                                      等价于:

                                          $("div").before("span")

                                              // 在div节点之前插入节点span

                              2. 链式操作时,主体不一样

                                  示例:

                                      $("span").insertBefore("div").css("backgroundColor", "red")

                                          // 将span节点插在div节点之前,并且span背景色设置为红色

                                      等价于:

                                          $("div").before("span").css("backgroundColor", "red")

                                              // 在div节点之前插入节点span,并且div背景色设置为红色

                    5. on和off

                              1. 传统的事件类型只能绑定一个事件,同时绑定多个事件,则后面会覆盖前面,只有最后一个有效

                              2. 事件监听器可以实现一个事件类型绑定多个事件,但是无法精确的删除其中某一个函数

                          在JQuery中,不带on的事件绑定,其底层使用事件监听器实现的,可以同时绑定多个事件,互不影响

                              如:同时绑定三个事件

                                  $("#div").click(function(){

                                      alert(1);

                                  })

                                  $("#div").click(function(){

                                      alert(2);

                                  })

                                  $("#div").click(function(){

                                      alert(3);

                                  })

                              则可一次点击触发三个事件

                      on方法添加事件

                              1. 给一个事件添加一个函数

                                    $("#div").on("click", function(){

                                        alert(1);

                                    })

                                    // 给div添加click事件

                              2. 给多个事件添加同一个函数,多个事件用冒号隔开即可

                                    $("#div").on("click mouseover", function(){

                                        alert(1);

                                    })

                              3. 给多个事件分别添加不同的函数,传入事件=>函数键值对即可

                                    $("#div").on({

                                        click: function(){

                                            alert(1);

                                        },

                                        mouseup: function(){

                                            alert(2);

                                        },

                                        mousemove: function(){

                                            alert(3);

                                        },

                                    })

                              4. 事件委托

                                      on的参数分别为: 父节点,触发对象的选择器,触发函数

                                    示例: 

                                        $("ul").on("click","li",function(){

                                            $(this).css("backgroundColor", "red");

                                        })

                        off方法取消事件

                              1. 取消所有事件上的所有函数

                                    $("#div1").off()

                              2. 取消某一个事件上的所有函数

                                    $("#div1").off("click")

                              3. 取消某一个事件上的某一个函数

                                    $("#div1").off("click", show)

                                    【注】这个被取消的函数必须是由函数名的函数

              6. 创建节点

                          $(`<li>内容</li>`).append($("ul"));

 

[E] JQuery常用方法3

                    1. 阻止事件冒泡 stopPropagation()

                          示例:

                              $("#div1").on("click", function(ev){

                                  aleret(this.id);

                                  ev.stopPropagation()

                              })

                    2. 阻止对象的默认行为 preventDefault

                          示例:

                              $("a").click(function(ev){

                                  ev.preventDefault();

                              })

                              取消a链接的默认行为,点击后不会跳转

                    3. 既阻止事件冒泡,又阻止默认行为 return false

                          示例:假设a又冒泡事件

                              $("a").click(function(ev){

                                  return false;

                              })

                    4. which

                           1. 在鼠标事件中输出button

                                      输出值:

                                          左键    1

                                          滚轮    2

                                          右键    3

                                  $("#div1").click(function(ev){

                                      alert(ev.which);

                                  })

                         2. 在keydown事件中,输出keyCode     键码(不区分大小写)



                            3. 在keypress事件中,输出charCode   字符码(区分大小写)


                    5.  offset()             直接获取当前元素到可视窗口的距离

                        offset().left       直接得到当前元素到最左端(可视窗口)的距离

                        offset().top        直接得到当前元素到最左端(可视窗口)的距离

                        【注】没有offset().right和offset().bottom

                          示例:

                              $("#div2").offset().left

                                  获取div2节点距离可视窗口最左端的距离

                    6.  position()           直接获取当前元素,距离第一个有定位父节点的距离,margin算在内

                         position().left     

                         position().top

                        【注】没有position().right和position().bottom

                          示例:

                              $("#div2").position().left

                                  获取div2节点距离第一个有定位的父节点最左端的距离

                    7. offsetParent()       查找第一个有定位的父节点,如果父节点没有定位子继续找,最后找到html

                          示例: 

                              $("#div1").offsetParent().css("backgroundColor", "red")

                                  将div1元素的有定位元素的父节点的背景色设置为red。

                    8. val()            获取/设置表单元素的值

                          【注】1. 取值时,JQ只能取到第一个符合条件的元素的值

                                2. 设置时,JQ批量设置所有符合条件的元素的值

                            此外:

                                  css(), arttr(), html()等都可以实现批量赋值

                    9. size()           获取网页元素的个数

                        length           等同于size()

                    10. each()           循环遍历

                        示例:

                            $("div").each(function(item, index){

                                $(item).html(index);

                            })

 

原文地址:https://www.cnblogs.com/carreyBlog/p/13267626.html