• jQuery学习笔记之DOM操作、事件绑定(2)


    jQuery学习笔记之DOM操作、事件绑定(2)
    ————————————————————学习目录————————————————————————
    4.DOM操作
    5.事件绑定

    源码地址:

    https://github.com/iyun/jQueryDemo.git

    ————————————————————学习目录————————————————————————
    4.DOM操作(节点增删改查)

    节点查找:节点分为三种类型:元素节点、属性节点、文本节点

    创建节点
    创建元素节点
    使用 jQuery 的工厂函数 $(HTML) 。该工厂函数会根据传入的 html 标记字符串创建一个 DOM 对象, 并把这个 DOM 对象包装成一个 jQuery 对象返回。
    当创建单个元素时, 需注意闭合标签。

    var $option = $("<option></option>");
    创建文本节点
        创建元素节点后,使用text()方法来设置其节点的文本内容。
    
    $option.text("北京");
        创建元素节点时,直接将其节点的文本内容插入其中。
    
    var $option = $("<option>北京</option>");
    创建属性节点
        创建元素节点后,使用attr()方法来设置其节点的属性。
    
    $option.attr("value","北京");
        创建元素节点时,直接将其节点的属性插入其中。
    
    var $option = $("<option value="北京">北京</option>");

    插入节点
    内部插入节点
    append(content) :向每个匹配的元素的内部的结尾处追加内容
    appendTo(content) :将每个匹配的元素追加到指定的元素中的内部结尾处
    prepend(content):向每个匹配的元素的内部的开始处插入内容
    prependTo(content) :将每个匹配的元素插入到指定的元素内部的开始处外部插入节点
    after(content) :在每个匹配的元素之后插入内容
    before(content):在每个匹配的元素之前插入内容
    insertAfter(content):把所有匹配的元素插入到另一个、指定的元素元素集合的后面
    insertBefore(content) :把所有匹配的元素插入到另一个、指定的元素元素集合的前面

    删除节点
    remove(): 从 DOM 中删除所有匹配的元素, 传入的参数用于根据 jQuery 表达式来筛选元素. 当某个节点用 remove() 方法删除后, 该节点所包含的所有后代节点将被同时删除. 这个方法的返回值是一个指向已被删除的节点的引用。
    empty(): 清空节点 – 清空元素中的所有后代节点(不包含属性节点)。

    复制节点
    clone(): 克隆匹配的 DOM 元素, 返回值为克隆后的副本. 但此时复制的新节点不具有任何行为.
    clone(true): 复制元素的同时也复制元素中的的事件

            <button>保存</button>
            <p>段落</p>
    
             $("button").click(function(){
               alert("点击按钮");
             });
    
              //克隆节点,不克隆事件
              $("button").clone().appendTo("p");
    
              //克隆节点,克隆事件
              $("button").clone(true).appendTo("p");

    替换节点
    replaceWith(): 将所有匹配的元素都替换为指定的 HTML 或 DOM 元素
    replaceAll(): 颠倒了的 replaceWith() 方法.
    注意: 若在替换之前, 已经在元素上绑定了事件, 替换后原先绑定的事件会与原先的元素一起消失

                //<p>段落</p>
                //方式一
                $("p").replaceWith("<button>登陆</button>");
                //方式二
                $("<button>登陆</button>").replaceAll("p");

    属性操作
    attr(): 获取属性和设置属性。
    当为该方法传递一个参数时, 即为某元素的获取指定属性。
    当为该方法传递两个参数时, 即为某元素设置指定属性的值。
    jQuery 中有很多方法都是一个函数实现获取和设置. 如: attr(), html(), text(), val(), height(), width(), css() 等。
    removeAttr(“属性名”): 删除指定元素的指定属性

    样式操作
    获取 class 和设置 class :class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成。
    追加样式:addClass()
    移除样式:removeClass() — 从匹配的元素中删除全部或指定的 class
    切换样式:toggleClass() — 控制样式上的重复切换.如果类名存在则删除它, 如果类名不存在则添加它。
    判断是否含有某个样式:hasClass() — 判断元素中是否含有某个 class, 如果有, 则返回 true; 否则返回 false。

    遍历节点
    取得匹配元素的所有子元素组成的集合: children(). 该方法只考虑子元素而不考虑任何后代元素.
    取得匹配元素后面紧邻的同辈元素下一个元素:next();
    取得匹配元素前面紧邻的同辈元素上一个元素:prev()
    取得匹配元素前后所有的同辈元素: siblings()
    在jQuery中还有很多遍历节点的方法,具体参看API帮助文档。

    包裹节点
    wrap()

            <strong title="jQuery">jQuery</strong>
            <strong title="jQuery">jQuery</strong>
            //jQuery代码如下:
            $("strong").wrap("<b></b>");
    
            //得到的结果如下
            <b><strong title="jQuery">jQuery</strong></b>
            <b><strong title="jQuery">jQuery</strong></b>
    wrapAll()
    
            <strong title="jQuery">jQuery</strong>
            <strong title="jQuery">jQuery</strong>
            //jQuery代码如下:
            $("strong").wrapAll("<b></b>");
    
            //得到的结果如下
            <b>
            <strong title="jQuery">jQuery</strong>
            <strong title="jQuery">jQuery</strong>
            </b>
    wrapInner()
    
            <strong title="jQuery">jQuery</strong>
            //jQuery代码如下:
            $("strong"). wrapInner("<b></b>");
    
            //得到的结果如下
            <strong title="jQuery"><b>jQuery</b></strong>

    5.jQuery 中的事件
    在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件.
    在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 在 jQuery 中使用$(document).ready() 方法.

    面试题:
    1.在js里面可以使用widow.onload= 当页面上面所有的元素加载完毕之后执行触发。
    2.$(function(){}) == window.jQuery(document).ready(function());
    两者的区别:
    执行时机:window.onload它需要等待页面上面所有元素都加载完毕,包括图片,src=“”
    $(function(){})只需要页面上面的dom元素绘制完毕之后就执行,不含图片或者第三方的连接地址…

    事件绑定
    我们除了可以直接为页面的元素增加事件,也可以利用bind()方法为页面元素来绑定事件。
    语法:bind(type, [data], fn)
    参数type:含有一个或多个事件类型的字符串。
    提供可以绑定的事件有:blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error。
    参数data:作为event.data属性值传递给事件对象的额外数据对象。如{username:"雷"} json格式 alert(event.data.username);
    参数fn:绑定到每个匹配元素的事件上面的处理函数。

    事件解绑unbind

    //浏览器提供一个对象用来调试,即控制台信息`console.info(event);`
    常用:`mouseover mouseout`
    
  • 相关阅读:
    [Angular] @ContentChild and ngAfterContentInit
    [Angular] Content Projection with ng-content
    [ES2016] Check if an array contains an item using Array.prototype.includes
    [Ramda] Handle Errors in Ramda Pipelines with tryCatch
    [React Native] Installing and Linking Modules with Native Code in React Native
    [Ramda] Refactor to Point Free Functions with Ramda using compose and converge
    [React Native] Writing Platform-Specific Components for iOS and Android in React Native
    [Redux] Avoid action type naming conflicts
    paip.索引优化---sql distict—order by 法
    DL,DT,DD,比传统table更语义,解析更快的table列表方式
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467957.html
Copyright © 2020-2023  润新知