zoukankan      html  css  js  c++  java
  • jQuery 基础一 样式篇

    $(document).ready 的作用是等页面的文档(document)中的节点都加载完毕后,再执行后续的代码,因为我们在执行代码的时候,可能会依赖页面的某一个元素,我们要确保这个元素真正的的被加载完毕后才能正确的使用。

    $(document).ready类似ios里面的viewdidload

    对应于javascript中的各类选择器,如: $("*") ——所有元素 $("#lastname") ——id="lastname" 的元素 前面是# 就表示是id $(".intro") ——所有 class="intro" 的元素 前面是 . 就表示是class $("p") ——所有 <p> 元素 $(".intro.demo") ——所有 class="intro" 且 class="demo" 的元素

    jQuery对象与DOM对象

    jQuery对象与DOM对象是不一样的
    可能一时半会分不清楚哪些是jQuery对象,哪些是DOM对象,下面重点介绍一下jQuery对象,以及两者相互间的转换。
    通过一个简单的例子,简单区分下jQuery对象与DOM对象:
    例子 <p id=”imooc”></p>

    我们要获取页面上这个id为imooc的p元素,然后给这个文本节点增加一段文字:“您好!通过慕课网学习jQuery才是最佳的途径”,并且让文字颜色变成红色。

    普通处理,通过标准JavaScript处理:

    var p = document.getElementById('imooc');
    p.innerHTML = '您好!通过慕课网学习jQuery才是最佳的途径';
    p.style.color = 'red';

    通过原生DOM模型提供的document.getElementById(“imooc”) 方法获取的DOM元素就是一个DOM对象,再通过innerHTML与style属性处理文本与颜色。

    jQuery的处理:

    var $p = $('#imooc');//#是代表获取id
    $p.html('您好!通过慕课网学习jQuery才是最佳的途径').css('color','red');
    通过$('#imooc')方法会得到一个$p的jQuery对象,$p是一个类数组对象。这个对象里面包含了DOM对象的信息,然后封装了很多操作方法,调用自己的方法html与css,得到的效果与标准的JavaScript处理结果是一致的。

    通过标准的JavaScript操作DOM与jQuyer操作DOM的对比,我们不难发现:

    通过jQuery方法包装后的对象,是一个类数组对象。它与DOM对象完全不同,唯一相似的是它们都能操作DOM。

    1. 通过jQuery处理DOM的操作,可以让开发者更专注业务逻辑的开发,而不需要我们具体知道哪个DOM节点有那些方法,也不需要关心不同浏览器的兼容性问题,我们通过jQuery提供的API进行开发,代码也会更加精短。
    
    

    jQuery对象转化成DOM对象

     jQuery库本质上还是JavaScript代码,它只是对JavaScript语言进行包装处理,为的是提供更好更方便快捷的DOM处理与开发中经常使用的功能。我们使用jQuery的同时也能混合JavaScript原生代码一起使用。在很多场景中,我们需要jQuery与DOM能够相互的转换,它们都是可以操作的DOM元素,jQuery是一个类数组对象,而DOM对象就是一个单独的DOM元素。

    如何把jQuery对象转成DOM对象?

    利用数组下标的方式读取到jQuery中的DOM对象

    HTML代码

    <div>元素一</div>
    <div>元素二</div>
    <div>元素三</div>

    JavaScript代码

    var $div = $('div') //jQuery对象
    var div = $div[0] //转化成DOM对象
    div.style.color = 'red' //操作dom对象的属性

    用jQuery找到所有的div元素(3个),因为jQuery对象也是一个数组结构,可以通过数组下标索引找到第一个div元素,通过返回的div对象,调用它的style属性修改第一个div元素的颜色。这里需要注意的一点是,数组的索引是从0开始的,也就是第一个元素下标是0

    通过jQuery自带的get()方法

    jQuery对象自身提供一个.get() 方法允许我们直接访问jQuery对象中相关的DOM节点,get方法中提供一个元素的索引:

    var $div = $('div') //jQuery对象
    var div = $div.get(0) //通过get方法,转化成DOM对象
    div.style.color = 'red' //操作dom对象的属性

    其实我们翻开源码,看看就知道了,get方法就是利用的第一种方式处理的,只是包装成一个get让开发者更直接方便的使用。

    
    

    DOM对象转化成jQuery对象

    相比较jQuery转化成DOM,开发中更多的情况是把一个dom对象加工成jQuery对象。$(参数)是一个多功能的方法,通过传递不同的参数而产生不同的作用。

    如果传递给$(DOM)函数的参数是一个DOM对象,jQuery方法会把这个DOM对象给包装成一个新的jQuery对象

    通过$(dom)方法将普通的dom对象加工成jQuery对象之后,我们就可以调用jQuery的方法了

    HTML代码

    <div>元素一</div>
    <div>元素二</div>
    <div>元素三</div>

    JavaScript代码

    var div = document.getElementsByTagName('div'); //dom对象
    var $div = $(div); //jQuery对象
    var $first = $div.first(); //找到第一个div元素
    $first.css('color', 'red'); //给第一个元素设置颜色

    通过getElementsByTagName获取到所有div节点的元素,结果是一个dom合集对象,不过这个对象是一个数组合集(3个div元素)。通过$(div)方法转化成jQuery对象,通过调用jQuery对象中的first与css方法查找第一个元素并且改变其颜色

    
    

    jQuery选择器之id选择器

    页面的任何操作都需要节点的支撑,开发者如何快速高效的找到指定的节点也是前端开发中的一个重点。jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处理复杂选择过程与性能优化,更多专注业务逻辑的编写。

    jQuery几乎支持主流的css1~css3选择器的写法,我们从最简单的也是最常用的开始学起

    id选择器:一个用来查找的ID,即元素的id属性

    $( "#id" )

    id选择器也是基本的选择器,jQuery内部使用JavaScript函数document.getElementById()来处理ID的获取。原生语法的支持总是非常高效的,所以在操作DOM的获取上,如果能采用id的话尽然考虑用这个选择器

    值得注意:

    id是唯一的,每个id值在一个页面中只能使用一次。如果多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素。但这种行为不应该发生;有超过一个元素的页面使用相同的id是无效的

    jQuery选择器之类选择器

    类选择器,顾名思义,通过class样式类名来获取节点

    $( ".class" ) 

    类选择器,相对id选择器来说,效率相对会低一点,但是优势就是可以多选

    同样的jQuery在实现上,对于类选择器,如果浏览器支持,jQuery使用JavaScript的原生getElementsByClassName()函数来实现的

    右边实现一个原生getElementsByClassName()函数的实现代码与jQuery实现代码的比较

    我们不难发现:

    jQuery除了选择上的简单,而且没有再次使用循环处理

    不难想到$(".imooc").css()方法内部肯定是带了一个隐式的循环处理,所以使用jQuery选择节点,不仅仅只是选择上的简单,同时还增加很多关联的便利操作,后续我们还会慢慢的学到其他的优势。

    
    

    jQuery选择器之元素选择器

    元素选择器:根据给定(html)标记名称选择所有的元素

    描述:

    $( "element" )

    搜索指定元素标签名的所有节点,这个是一个合集的操作。同样的也有原生方法getElementsByTagName()函数支持

    右边编辑器代码所示:

    第一组:通过getElementsByTagName方法得到页面所有的<div>元素

    var divs = document.getElementsByTagName('div');

    divs是dom合集对象,通过循环给每一个合集中的<div>元素赋予新的boder样式

    第二组:同样的效果,$("p")选取所有的<p>元素,通过css方法直接赋予样式

    
    

    jQuery选择器之全选择器(*选择器)

    
    

    在CSS中,经常会在第一行写下这样一段样式

    
    
    * {padding: 0; margin: 0;}
    
    

    通配符*意味着给所有的元素设置默认的边距。jQuery中我们也可以通过传递*选择器来选中文档页面中的元素

    
    

    描述:

    
    
    $( "*" )
    
    

    抛开jQuery,如果要获取文档中所有的元素,通过document.getElementsByTagName()中传递"*"同样可以获取到

    
    

    不难发现,id、class、tag都可以通过原生的方法获取到对应的节点,但是我们还需要考虑一个兼容性的问题,我这里顺便提及一下,比如:

    
    
    1. IE会将注释节点实现为元素,所以在IE中调用getElementsByTagName里面会包含注释节点,这个通常是不应该的
    2. getElementById的参数在IE8及较低的版本不区分大小写
    3. IE7及较低的版本中,表单元素中,如果表单A的name属性名用了另一个元素B的ID名并且A在B之前,那么getElementById会选中A
    4. IE8及较低的版本,浏览器不支持getElementsByClassName
    
    

    看到了吧,作为一名合格的前端不是那么简单的,就一个基本的选择器上面都需要做这么多兼容,幸好有jQuery的出现,让我们省了很多功夫,如果大家对jQuery的实现感兴趣,可以看我另一个门课程 《jQuery源码解析》

    
    

    jQuery选择器之层级选择器

    文档中的所有的节点之间都是有这样或者那样的关系。我们可以把节点之间的关系可以用传统的家族关系来描述,可以把文档树当作一个家谱,那么节点与节点直接就会存在父子,兄弟,祖孙的关系了。

    选择器中的层级选择器就是用来处理这种关系

    子元素 后代元素 兄弟元素 相邻元素

    仔细观察层级选择器之间还是有很多相似与不同点

    1. 层级选择器都有一个参考节点
    2. 后代选择器包含子选择器的选择的内容
    3. 一般兄弟选择器包含相邻兄弟选择的内容
    4. 相邻兄弟选择器和一般兄弟选择器所选择到的元素,必须在同一个父元素下
    5. $( "parent > child" )
      子选择器:选择所有指定“parent”元素中指定的"child"的直接子元素。

      $("ancestor descendant")
      后代选择器:选择给定的祖先元素的所有后代元素, 一个元素的后代可能是该元素的一个孩子,孙子,曾孙等

      $("prev + next")
      相邻兄弟选择器:选择所有紧接在“prev”元素后的“next”元素

      $("prev ~ siblings")
      一般兄弟选择器:匹配“prev”元素之后的所有 兄弟元素。具有相同的父元素,并匹配过滤“siblings”选择器
     
     
     
     
     
     
     
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/liaolijun/p/7299288.html
Copyright © 2011-2022 走看看