美文网首页我爱编程
jQuery学习笔记(一)

jQuery学习笔记(一)

作者: 琉木_ | 来源:发表于2016-10-19 23:35 被阅读0次

    本系列适合作为JQ的复习文档。

    本章主要参考来源:绿叶学习网 - jQuery入门教程

    0 简介

    jQuery,JavaScript和Query(查询),是辅助JavaScript开发的库。

    官网有两种库文件:

    • jquery.js(开发版) 完整无压缩,用于测试与学习
    • jquery.min.js(发布版) 高度压缩,用于实际开发

    需要先将jQuery引入HTML,再进行库的调用:
    <script type="text/javascript" src="jquery-1.11.3.min.js"></script>

    1 选择器

    jQuery选择器跟CSS选择器非常类似。
    $("选择器")

    1.1 基础选择器

    1.1.1 基本选择器
    • 元素选择器
      $("元素名")
      ======================
      $(function () {
      // $("div").css("color","red");
      })
      $(function(){})功能类似于JavaScript中的window.onload = function(){},也就是在文档加载完成之后执行的代码。
      写jQuery代码都在$(function(){})里面写。
      css()方法是jQuery操作CSS样式的方法,因为css()是“对象的一个方法”,所以要使用点运算符来调用它:$(“div”).css()。
    • id选择器
      $("#id名")
    • class选择器
      $(".类名")
    • 群组选择器
      $("选择器1 , 选择器2 ,……,选择器n")
    • *选择器
      $(function () {
      $("#list ").css("color","red");
      })
      在CSS中,我们常常用
      选择器来去除所有元素默认的padding和margin:*{padding:0;margin:0;}
    1.1.2 层次选择器
    • 后代选择器
      $("M N")
      选取M下的所有N元素,包括子元素和其他后代元素。
    • 子代选择器
      $("M>N")
      选取M下的子元素N,不包括其他后代元素。
    • 兄弟选择器
      $("M~N")
      选取M元素后面的所有某一类兄弟元素N。
      prevAll()方法用来“向前查找兄弟元素”
    • 相邻选择器
      $("M+N")
      选取M元素后面的某一个相邻的兄弟元素N。

    在实际开发中,如果想要在两两元素之间实现什么效果,会经常用到这样的技巧:如$("li+li"),使用相邻选择器,表示“选择li元素相邻的下一个li元素”。

    1.1.3 属性选择器

    属性 attribute
    属性选择器是参考正则表达式来设计的,它使选择器具有通配符的功能。
    在jQuery中,属性选择器最常见于表单操作。

    selector指选择器,attr指属性(attribute),value指属性值。
    $("selector[attr]") 选择包含给定属性的元素
    $("selector[attr='value']") 选择给定的属性是某个特定值的元素
    $("selector[attr != 'value']") 选择所有含有指定的属性,但属性不等于特定值的元素
    $("selector[attr *= 'value']") 选择给定的属性是以包含某些值的元素
    $("selector[attr ^= 'value']") 选择给定的属性是以某些值开始的元素(比较少用)
    $("selector[attr $= 'value']") 选择给定的属性是以某些值结尾的元素(比较少用)
    $("selector[selector1][selector2]…[selectorN]") 复合属性选择器,需要同时满足多个条件时使用

    1.2 伪类选择器

    如:link、:visited、:hover、:active这4个超链接选择器

    1.2.1 简单伪类选择器;

    :not(selector) 选择除了某个选择器之外的所有元素
    :first或first() 选择某元素的第一个元素(非子元素)
    :last或last() 选择某元素的最后一个元素(非子元素)
    :odd 选择某元素的索引值为奇数的元素
    :even 选择某元素的索引值为偶数的元素
    :eq(index) 选择给定索引值的元素,索引值index是一个整数,从0开始
    :lt(index) 选择所有小于索引值的元素,索引值index是一个整数,从0开始
    :gt(index) 选择所有大于索引值的元素,索引值index是一个整数,从0开始
    :header 选择h1~h6的标题元素
    :animated 选择所有正在执行动画效果的元素
    :root 选择页面的根元素
    :target 选择当前活动的目标元素(锚点)

    $("li:not(#myLi)")表示选择除了id为myLi之外的其他li元素。
    $("li:first,li:last")是一个群组选择器,表示选择第一个li元素和最后一个li元素。
    $("li:odd")表示选择索引值为奇数的li元素。
    $(":header").css("color", "red");
    
    1.2.2 子元素伪类选择器??

    “第1类选择器不分元素类型,第2类选择器区分元素类型。”
    第1类子元素伪类选择器

    :first-child 选择父元素的第1个子元素
    :last-child 选择父元素的最后1个子元素
    :nth-child(n) 选择父元素下的第n个元素或奇偶元素,n的值为“整数|odd|even”
    :only-child 选择父元素中唯一的子元素(该父元素只有一个子元素)

            $("ul li:first").css("background-color", "red");
            $("ul li:nth-child(2)").css("background-color", "orange");
            $("ul li:nth-child(3)").css("background-color", "yellow");
            $("ul li:nth-child(4)").css("background-color", "green");
            $("ul li:last").css("background-color", "blue");
    

    上面的效果用CSS操作来得更简单
    第2类子元素伪类选择器

    :first-of-type 选择同元素类型的第1个同级兄弟元素
    :last-of-type 选择同元素类型的最后1个同级兄弟元素
    :nth-of-type 选择同元素类型的第n个同级兄弟元素,n的值可以是“整数|odd|even”
    :only-of-type 匹配父元素中特定类型的唯一子元素(但是父元素可以有多个子元素)

    1.2.3可见性伪类选择器;
    :hidden     选取所有不可见元素
    :visible    选取所有可见元素,与:hidden相反
    

    “:hidden”选择器选择的不仅包括样式为display:none所有元素,而且还包括属性type="hidden"和样式为visibility:hidden的所有元素。

    1.2.4 内容伪类选择器;

    :contains(text) 选择包含给定文本内容的元素
    :has(selector) 选择含有选择器所匹配元素的元素
    :empty 选择所有不包含子元素或者不包含文本的元素
    :parent 选择含有子元素或者文本的元素(跟:empty相反)

    $("E:contains(text)")
    $("p:contains(jQuery)").css("background-color", "red");
    $("p:contains(jQuery)")表示选择包含“jQuery”这一个文本内容的p元素。
    $(":has(selector)")
    $("div:has(span)")表示选择内部含有span元素的div元素。
    $("div:has(#red,#yellow)")表示选择内部含有id为red和id为yellow子元素的div元素。:has(selector)中的selector是一个群组选择器。
    

    使用:empty选择器选择所有“没有子元素”或者“没有文本”的空元素。
    $("td:empty")表示选择内部没有文本内容页没有子元素的td元素。
    使用:parent选择器选择“含有子元素”或者“含有文本”的元素。:parent选择器跟:empty选择器是相反的。
    $("td:parent")表示选择内部有文本内容页没有子元素的td元素。

    1.2.5 表单伪类选择器;

    :input 选择所有input元素
    :button 选择所有普通按钮,即type="button"的input元素
    :submit 选择所有提交按钮,即type="submit"的input元素
    :reset 选择所有重置按钮,即type="reset"的input元素
    :text 选择所有单行文本框
    :textarea 选择所有多行文本框
    :password 选择所有密码文本框
    :radio 选择所有单选按钮
    :checkbox 选择所有复选框
    :image 选择所有图像域
    :hidden 选择所有隐藏域
    :file 选择所有文件域

    $("input:checkbox").attr("checked","checked");
    

    $("input:checkbox")表示选择所有复选框元素,attr("checked","checked")表示设置复选框的checked属性值为checked。

    1.2.6 表单属性伪类选择器

    :checked 选择所有被选中的表单元素,一般用于radio和checkbox

    option:selected 选择所有被选中的option元素
    :enabled 选择所有可用元素,一般用于input、select和textarea
    :disabled 选择所有不可用元素,一般用于input、select和textarea
    :read-only 选择所有只读元素,一般用于input和textarea
    :focus 选择获得焦点的元素,常用于input和textarea

    var a = $("input:checked").val();
    

    $("input:checked").val()表示选择“被选中”的单选框或复选框(因为只有单选框和复选框有checked属性),并且获取表单元素的value值。
    val()方法用于获取表单元素的value值;
    jQuery这些选择器是参考CSS3选择器来的.

    2 对元素的操作

    有3种操作。

    2.1 属性操作

    2.1.1 获取元素属性;
      $("元素名").attr("属性名")
    

    会返回该元素的这个属性值。

    2.1.2 设置元素属性;
    $("元素名").attr("属性","属性值")
    

    会在该元素添上该属性。
    在实际开发中,我们很多时候需要使用jQuery来为某些元素添加一些属性。
    可以使用prop()方法来获取和设置元素属性;
    attr()方法用于操作元素的固有属性(元素本身具有的属性,如a标签的href、target、title等);
    prop()方法用于操作元素的自定义属性(用户自己定义的一些属性)。

    2.1.3 删除元素属性;
     $("a").removeAttr("title");
    

    使用removeAttr()方法把a标签的title属性删除。

    2.2 内容操作

    html()和text()用于操作普通标签,val()用于操作表单标签。

    2.2.1 html()和text()
    $("选择器").html()              //获取HTML内容
    $("选择器").html("HTML内容,即HTML的语句");   //设置HTML内容
    

    跟JavaScript中的innerHTML效果相同。
    $().text() //获取文本内容
    $().text("文本内容") //设置文本内容
    跟JavaScript中的innerText效果相同
    JavaScript中的innerText属性并不能在Firefox浏览器下运行,而jQuery的text()方法支持所有的浏览器。

    2.2.2 val()
    $().val()                  //获取表单元素
    $().val("表单元素的值")    //设置表单元素
    

    表单元素的值都是通过自身的value属性来传递的。因此不能用html()和text()这两种方法来获取元素的内容(值),而要用val()来获取或设置“表单元素”的值。

    2.3 样式操作

    使用jQuery操作元素样式,当样式比较少时,建议使用“CSS属性操作”;当样式比较多时,建议使用“CSS类名操作”。

    2.3.1 CSS属性操作
    $().css("属性") //获取属性值
    $().css("属性","属性值") //设置单个CSS属性
    $().css({"属性1":"属性值1","属性2":"属性值2",……}) //设置多个CSS属性设置多个CSS属性的 “键值对”的形式,跟JSON数据格式、JavaScript对象的属性形式是非常相似的;也可以用这种方式为元素设置单个CSS属性。
    
    2.3.2 CSS类名操作
    $().addClass("类名") //添加类名
    $().removeClass("类名") //删除类名
    $().toggleClass("类名") //添加或删除类名
    

    当需要使用jQuery为某些元素设置太多的CSS样式时,如果使用css()这个方法,jQuery里面的代码会显得比较臃肿。因此,我们更倾向于先在CSS代码中定义一个类,在这个类中定义相应的CSS代码,然后再使用jQuery对这个类名进行相应的添加、删除、切换,从而达到对样式进行批量操作。
    toggleClass()方法用于检查元素是否具有某个类名。如果类名不存在,则为该元素添加类名;如果类名已存在,则为该元素删除类名。

    2.3.3 非.css方法
    • 元素的宽度高度width()和height()
      $().width() //获取元素的宽度,是一个不带单位的数字
      $().width(n) //设置元素的宽度,n是一个整数,表示npx,不带单位
      $().height() //获取元素的高度 可用于window或document对象。
      $().height(n) //设置元素的高度 可用于window或document对象。
    • 元素的位置offset()和position()
      $().offset().top //获取元素相对于当前文档“顶部”的距离。
      $().offset().left //获取元素相对于当前文档“左部”的距离。
      $().position().top //表示元素相对于被定位的祖辈元素的顶部的垂直距离。
      $().position().left //表示元素相对于被定位的祖辈元素的左部的水平距离。
      在web应用开发中,获取元素的坐标是非常常见的操作。jQuery的offset()和position()的结合使用,方便我们快速获取元素坐标。
    • 滚动条的距离scrollTop()和scrollLeft()
      $().scrollTop() //获取滚动距离
      $().scrollTop(value) //设置滚动距离
      scrollLeft()方法的用法跟scrollTop()方法一样。
      我们常见到的回顶部特效、下拉固定特效等,其实就跟这个技巧有关。

    相关文章

      网友评论

        本文标题:jQuery学习笔记(一)

        本文链接:https://www.haomeiwen.com/subject/jejtuttx.html