为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
jQuery基础(二)—DOM篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery基础(二)—DOM篇

Aaron艾伦 Web前端工程师
难度入门
时长 2小时17分
  • jQuery节点创建与属性的处理

    创建为本节点:

    $("<div>创建节点</div>")

    创建为属性节点:

    $("<div id='test' class='aaron'>穿件节点</div>")

                                                |

    修改如下:

    $("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")

    查看全部
  • 克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆

    .clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。

    clone方法比较简单就是克隆节点,但是需要注意,如果节点有事件或者数据之类的其他处理,我们需要通过clone(ture)传递一个布尔值ture用来指定,这样不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了

    例如:

    HTML部分
    <div></div>
    
    JavaScript部分
    $("div").on('click', function() {//执行操作})
    
    //clone处理一
    $("div").clone()   //只克隆了结构,事件丢失
    
    //clone处理二
    $("div").clone(true) //结构、事件与数据都克隆

    使用上就是这样简单,使用克隆的我们需要额外知道的细节:

    • clone()方法时,在将它插入到文档之前,我们可以修改克隆后的元素或者元素内容,如右边代码我 $(this).clone().css('color','red') 增加了一个颜色

    • 通过传递true,将所有绑定在原始元素上的事件处理函数复制到克隆元素上

    • clone()方法是jQuery扩展的,只能处理通过jQuery绑定的事件与数据

    • 元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个


    查看全部
    0 采集 收起 来源:DOM拷贝clone()

    2018-08-01

  • DOM创建节点及节点属性——通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作,但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了

    创建流程比较简单,大体如下:

    1. 创建节点(常见的:元素、属性和文本)

    2. 添加节点的一些属性

    3. 加入到文档中

    流程中涉及的一点方法:

    • 创建元素:document.createElement

    • 设置属性:setAttribute

    • 添加文本:innerHTML

    • 加入文档:appendChild


    查看全部
  •  $('p').click(function(e) {

            alert(e.target.innerHTML)

        })

    e作为function的参数没有指向确定的jQuery对象,加上.target才有效的指向了调用该函数的对象,

    通过一张对比表来解释2个方法之间的不同

    方法名

    参数

    事件及数据是否也被移除

    元素自身是否被移除

    remove

    支持选择器表达

    是(无参数时),有参数时要根据参数所涉及的范围

    detach

    参数同remove

    情况同remove

    remove:移除节点

    • 无参数,移除自身整个节点以及该节点的内部的所有节点,包括节点上事件与数据

    • 有参数,移除筛选出的节点以及该节点的内部的所有节点,包括节点上事件与数据

    detach:移除节点

    • 移除的处理与remove一致

    • 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

    • 例如:$("p").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。


    查看全部
  • DOM节点删除之empty和remove区别

    要用到移除指定元素的时候,jQuery提供了empty()与remove([expr])二个方法,两个都是删除元素,但是两者还是有区别

    empty方法

    • 严格地讲,empty()方法并不是删除节点,而是清空节点,它能清空元素中的所有后代节点

    • empty不能删除自己本身这个节点

    remove方法

    • 该节点与该节点所包含的所有后代节点将同时被删除

    • 提供传递一个筛选的表达式,删除指定合集中的元素

    以上就是二者的区别,我们具体通过右边代码部分加深理解


    查看全部
  • DOM外部插入insertAfter()与insertBefore()

    与内部插入处理一样,jQuery由于内容目标的位置不同,然增加了2个新的方法insertAfter与insertBefore

    • .before()和.insertBefore()实现同样的功能。主要的区别是语法——内容和目标的位置。 对于before()选择表达式在函数前面,内容作为参数,而.insertBefore()刚好相反,内容在方法前面,它将被放在参数里元素的前面

    • .after()和.insertAfter() 实现同样的功能。主要的不同是语法——特别是(插入)内容和目标的位置。 对于after()选择表达式在函数的前面,参数是将要插入的内容。对于 .insertAfter(), 刚好相反,内容在方法前面,它将被放在参数里元素的后面

    • before、after与insertBefore。insertAfter的除了目标与位置的不同外,后面的不支持多参数处理

    注意事项:

    • insertAfter将JQuery封装好的元素插入到指定元素的后面,如果元素后面有元素了,那将后面的元素后移,然后将JQuery对象插入;

    • insertBefore将JQuery封装好的元素插入到指定元素的前面,如果元素前面有元素了,那将前面的元素前移,然后将JQuery对象插入;


    查看全部

  • DOM外部插入after()与before()

    节点与节点之前有各种关系,除了父子,祖辈关系,还可以是兄弟关系。之前我们在处理节点插入的时候,接触到了内部插入的几个方法,这节我们开始讲外部插入的处理,也就是兄弟之间的关系处理,这里jQuery引入了2个方法,可以用来在匹配I的元素前后插入内容

    选择器的描述:

    • before与after都是用来对相对选中元素外部增加相邻的兄弟节点

    • 2个方法都是都可以接收HTML字符串,DOM 元素,元素数组,或者jQuery对象,用来插入到集合中每个匹配元素的前面或者后面

    • 2个方法都支持多个参数传递after(div1,div2,....) 可以参考右边案例代码

    注意点:

    • after向元素的后边添加html代码,如果元素后面有元素了,那将后面的元素后移,然后将html代码插入

    • before向元素的前边添加html代码,如果元素前面有元素了,那将前面的元素前移,然后将html代码插


    查看全部
  • DOM内部插入append()与appendTo()

    动态创建的元素是不够的,它只是临时存放在内存中,最终我们需要放到页面文档并呈现出来。那么问题来了,怎么放到文档上?

    这里就涉及到一个位置关系,常见的就是把这个新创建的元素,当作页面某一个元素的子元素放到其内部。针对这样的处理,jQuery就定义2个操作的方法

    append:这个操作与对指定的元素执行原生的appendChild方法,将它们添加到文档中的情况类似。

    appendTo:实际上,使用这个方法是颠倒了常规的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中。


    简单的总结就是:

    .append()和.appendTo()两种方法功能相同,主要的不同是语法——内容和目标的位置不同

    append()前面是被插入的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容,而后面是被插入的对象


    查看全部
  • jQuery节点创建与属性的处理

    上一节介绍了通过JavaScript原生接口创建节点,在处理上是非常复杂与繁琐的。我们可以通过使用jQuery来简化了这个过程

    创建元素节点:

    可以有几种方式,后面会慢慢接触。常见的就是直接把这个节点的结构给通过HTML标记字符串描述出来,通过$()函数处理,$("html结构")

    $("<div></div>")

    创建为本节点:

    与创建元素节点类似,可以直接把文本内容一并描述

    $("<div>我是文本节点</div>")

    创建为属性节点:

    与创建元素节点同样的方式

    $("<div id='test' class='aaron'>我是文本节点</div>")

    我们通过jQuery把上一届的代码改造一下,如右边代码所示

    一条一句就搞定了,跟写HTML结构方式是一样的

    $("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")

    这就是jQuery创建节点的方式,让我们保留HTML的结构书写方式,非常的简单、方便和灵活


    查看全部
  •   //遍历所有的li

            //修改偶数li内的字体颜色

            $("li").each(function(index, element) {

                if (index % 2) {

                    $(this).css('color','blue')

    除2求余,无论什么正整数,其计算结果只有两个,就是0和1。这两个值在C语言中也代表boolean类型,如果index%2等于1(true),那么index=1,3,5,7....,也就是第2,4,6,8...行了,即偶数行

    jQuery遍历之each()

    jQuery是一个合集对象,通过$()方法找到指定的元素合集后可以进行一系列的操作。比如我们操作$("li").css('') 给所有的li设置style值,因为jQuery是一个合集对象,所以css方法内部就必须封装一个遍历的方法,被称为隐式迭代的过程。要一个一个给合集中每一个li设置颜色,这里方法就是each

    .each() 方法就是一个for循环的迭代器,它会迭代jQuery对象合集中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数

    所以大体上了解3个重点:

    each是一个for循环的包装迭代器 each通过回调的方式处理,并且会有2个固定的实参,索引与元素 each回调方法中的this指向当前迭代的dom元素

    看一个简单的案例

    <ul>     <li>慕课网</li>     <li>Aaron</li> </ul>

    开始迭代li,循环2次

    $("li").each(function(index, element) {      index 索引 0,1      element是对应的li节点 li,li      this 指向的是li })

    这样可以在循环体会做一些逻辑操作了,如果需要提前退出,可以以通过返回 false以便在回调函数内中止循


    查看全部
  • jQuery遍历之add()方法

    jQuery是一个合集对象,通过$()方法找到指定的元素合集后可以进行一系列的操作。$()之后就意味着这个合集对象已经是确定的,如果后期需要再往这个合集中添加一新的元素要如何处理?jQuery为此提供add方法,用来创建一个新的jQuery对象 ,元素添加到匹配的元素集合中

    .add()的参数可以几乎接受任何的$(),包括一个jQuery选择器表达式,DOM元素,或HTML片段引用。

    简单的看一个案例:

    操作:选择所有的li元素,之后把p元素也加入到li的合集中

    <ul>     <li>list item 1</li>     <li>list item 3</li> </ul> <p>新的p元素</p>

    处理一:传递选择器

    $('li').add('p')

    处理二:传递dom元素

    $('li').

    还有一种方式,就是动态创建P标签加入到合集,然后插入到指定的位置,但是这样就改变元素的本身的排列了

     $('li').


    查看全部
  • //找到class=item-2的所有兄弟节点

            //然后筛选出最后一个!!!!1,加上蓝色的边

           $('.item-2').siblings(':last').css('border', '2px solid blue')

    jQuery遍历之siblings()

    jQuery是一个合集对象,如果想快速查找指定元素集合中每一个元素的同辈元素,此时可以用siblings()方法


    查看全部
  • jQuery遍历之next()方法

    jQuery是一个合集对象,如果想快速查找指定元素集合中每一个元素紧邻的后面同辈元素的元素集合,此时可以用next()方法

    理解节点查找关系:

    如下class="item-1"元素就是红色部分,那蓝色的class="item-2"就是它的兄弟元素

    <ul class="level-3">     <li class="item-1">1</li>     <li class="item-2">2</li>     <li class="item-3">3</li> </ul>

    next()无参数

    允许我们找遍元素集合中紧跟着这些元素的直接兄弟元素,并根据匹配的元素创建一个新的 jQuery 对象。

    注意:jQuery是一个合集对象,所以通过next匹配合集中每一个元素的
    通过prev()是匹配合集中每一个元素的


    查看全部
  • jQuery遍历之closest()方法

    以选定的元素为中心,往内查找可以通过find、children方法。如果往上查找,也就是查找当前元素的父辈祖辈元素,jQuery提供了closest()方法,这个方法类似parents但是又有一些细微的区别,属于使用频率很高的方法

    closest()方法接受一个匹配元素的选择器字符串

    从元素本身开始,在DOM 树上逐级向上级元素匹配,并返回最先匹配的祖先元素

    例如:在div元素中,往上查找所有的li元素,可以这样表达

    $("div").closet("li')

    注意:jQuery是一个合集对象,所以通过closest是匹配合集中每一个元素的祖先元素

    closest()方法给定的jQuery集合或元素来过滤元素

    同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个jQuery的对象

    注意事项:在使用的时候需要特别注意下

    粗看.parents()和.closest()是有点相似的,都是往上遍历祖辈元素,但是两者还是有区别的,否则就没有存在的意义了

    1. 起始位置不同:.closest开始于当前元素 .parents开始于父元素

    2. 遍历的目标不同:.closest要找到指定的目标,.parents遍历到文档根元素,closest向上查找,直到找到一个匹配的就停止查找,parents一直查找到根元素,并将匹配的元素加入集合

    3. 结果不同:.closest返回的是包含零个或一个元素的jquery对象,parents返回的是包含零个或一个或多个元素的jquery对象


    查看全部
  • jQuery遍历之parents()方法

    jQuery是一个合集对象,如果想快速查找合集里面的每一个元素的所有祖辈元素,此时可以用parents()方法

    其实也类似find与children的区别,parent只会查找一级,

    理解节点查找关系:parents则会往上一直查到查找到祖先节点

    <div class="div">     <ul class="son">         <li class="grandson">1</li>     </ul> </div>

    在li节点上找到祖 辈元素div, 这里可以用$("li").parents()方法


    查看全部

举报

0/150
提交
取消
课程须知
1、有HTML/CSS基础 2、有JavaScript基础
老师告诉你能学到什么?
1、jQuery的语法 2、jQuery节点操作
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!