zoukankan      html  css  js  c++  java
  • jquery dom

    DOM(Document Object Model,文档对象模型)为文档提供了一种结构化表示方法,通过该方法可以改变文档的内容和展示形式。在实际运用中,DOM更像是桥梁,通过它可以实现跨平台、跨语言的标准访问。

    单词Document即文档,当我们创建一个页面并加载到web浏览器时,dom模型则根据该页面的内容创建了一个文档文件;

    单词Object即对象,是指具有独立特性的一组数据集合;

    单词Model即模型,在页面文档中,通过树状模型展示页面的元素和内容,其展示的方式则是通过节点(node)来实现的。

    1、访问元素

    在操作中,元素的访问是最频繁、最常用的,主要包括对元素属性、内容、值、CSS的操作。

    (1) 元素属性操作

    a. 获取元素属性

    获取元素属性的语法格式如:attr(name),其中,参数name表示属性的名称。

    b. 设置元素属性

    设置元素属性的语法格式如:attr(name,value),其中,参数name表示属性的名称,value表示属性的值 。

    如果要设置多个属性,其语法格式如:attr({name0 : value0,name1 : value1})。

    attr()方法还可以绑定一个function函数,通过该函数返回的值作为元素的属性值,其语法格式如:attr(key,function(index)),其中,参数index为当前元素的索引号,整个函数返回一个字符串作为元素的属性值。

    c. 删除元素属性

    使用removeAttr()方法可以将元素的属性删除,其语法格式为:removeAttr(name),其中,参数name为元素属性的名称。

    (2) 元素内容操作

    在jquery中,操作元素内容的方法包括html()和text()。前者与javascript中的innerHTML属性类似,即获取或设置元素的HTML内容;后者与javascript中的innerText属性,即获取或设置元素的文本内容;

    a. html(),用于获取元素的html内容;

    b. html(val),用于设置元素的html内容;

    c. text(),用于获取元素的文本内容;

    d. text(val),用于设置元素的文本内容;

    注意:html()方法仅支持xhtml的文档,不能用于xml文档,而text()则既支持html文档,也支持xml文档。

    (3) 获取或设置元素值

    在jquery中,如果要获取元素的值,是通过val()方法实现的,其语法如:val(val),其中,如果不带参数val,则是获取某元素的值;反之,则是将参数val的赋给某元素,即设置元素的值。

    通过val()方法还可以获取select标记中的多个选项值,其语法如:val().join(",")。

    在val(val)方法中,如果有参数,其参数还可以是数组的形式,即val(array),其作用是设置元素被选中。

    (4) 元素样式操作

    元素样式的操作包含:直接设置样式、增加CSS类别、类别切换、删除类别。

    a. 直接设置元素样式值 

    通过css()方法为某个指定的元素设置样式值,其语法如:css(name, value),其中name为样式名称,value为样式的值。

    b. 增加css类别

    通过addClass()方法增加元素类别的名称,其语法如:addClass(name),其中,参数name为类别的名称。

    也可以增加多个类别的名称,只需要用空格将其隔开即可,其语法如:addClass(name1,name2 ... )。

    注意:使用addClass()方法仅是追加样式类别,即它还保存原有的类别。

    c. 类别切换

    通过toggleClass()方法切换不同的元素类别,其语法如:toggleClass(name),其中参数name为类别名称,其功能是当元素中含有名称为name的css类别时,删除该类别,否则增加一个该名称的css类别。

    d. 删除类别

    removeClass()方法用于删除类别,其语法如:removeClass([name]),其中,参数name为类别名称,该名称是可选项,当选该名称时,则删除名称是class的类别,有多个类别时用空格隔开。如果不选名称,则删除元素中的所有类别。

    2、创建节点元素

    函数$()用于动态创建页面元素,其语法格式如下:

    $(html)

    3、插入节点

    按照插入元素的顺序来分:

    (1) 内部插入节点方法

    append(content):向所选择的元素内部插入内容;

    append(fucntion(index,html)):向所选择的元素内部插入function函数所返回的内容;

    appendTo(content):把所选择的元素追加到另一个指定的元素集合中;

    prepend(content):向每个所选择的元素内部前置内容;

    prepend(function(index,html)):向所选择的元素内部前置function函数所返回的内容;

    prependTo(content):将所选择的元素前置到别一个指定的元素集合中;

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            .red { background: red; }
            .green { background: green; }
        </style>
    </head>
    <body>
        <p>Hello World!</p>
        <p>Hello Tomorrow!</p>
        <input type="button" name="name" value="append" id="append" />
        <input type="button" name="name" value="appendTo" id="appendTo" />
        <input type="button" name="name" value="prepend" id="prepend" />
        <input type="button" name="name" value="prependTo" id="prependTo" />
    </body>
    <script src="scripts/jquery.min.js"></script>
    <script>
        $(function () {
            $("#append").click(function () {
                $("p").append("<span class='red'>123</span>");
            })
            $("#appendTo").click(function () {
                $("<span class='red'>123</span>").appendTo("p");
            })
            $("#prepend").click(function () {
                $("p").prepend("<span class='red'>456</span>");
            })
            $("#prependTo").click(function () {
                $("<span class='red'>456</span>").prependTo("p");
            })
        })
    </script>
    </html>

    (2) 外部插入节点方法

    after(content):向所选择的元素外部后面插入内容;

    after(function):向所选择的元素外部后面插入function函数所返回的内容;

    before(content):向所选择的元素外部前面插入内容;

    before(function):向所选择的元素外部前面插入function函数所返回的内容;

    insertAfter(content):将所选择的元素插入另一个指定的元素外部后面;

    insertBefore(content):将所选择的元素插入另一个指定的元素外部前面;

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            p{ border: 1px solid gray; padding: 5px; }
            span { margin: 0px 5px; }
            .red { background: red; }
            .green { background: green; }
        </style>
    </head>
    <body>
        <p>Hello World!</p>
        <p>Hello Tomorrow!</p>
        <div>
            <input type="button" name="name" value="after" id="after" />
            <input type="button" name="name" value="before" id="before" />
            <input type="button" name="name" value="insertAfter" id="insertAfter" />
            <input type="button" name="name" value="insertBefore" id="insertBefore" />
        </div>
    </body>
    <script src="scripts/jquery.min.js"></script>
    <script>
        $(function () {
            $("#after").click(function () {
                $("p").after("456");
            })
            $("#before").click(function () {
                $("p").before("123");
            })
            //not execute
            $("#insertAfter").click(function () {
                $("p").insertAfter("456");
            })
            //not execute
            $("#insertBefore").click(function () {
                $("p").insertBefore("123");
            })
        })
    </script>
    </html>

    4、复制节点

    在jquery中,通过方法clone()实现复制节点,其语法格式为:

    clone()

    其功能为复制匹配的dom元素并且选中复制成功的元素,该方法仅是复制元素本身,被复制后的新元素不具有任何元素行为。

    如果需要在复制时将该元素的全部行为也进行复制,可以通过方法clone(true)实现,其语法格式为:

    clone(true)

    5、替换节点

    (1) replaceWith(content)

    将所有选择的元素替换成指定的html和dom元素,其中参数content为被所选择替换的内容。

    (2) replaceAll(selector)

    将所有选择的元素替换成指定selector的元素,其中参数selector为需要被替换的元素。

    (3) replaceWith()与replaceAll()方法都可以实现元素节点的替换,二者最大的区别在于替换字符的顺序,前者是用括号中的字符替换所选择的元素,后者是用字符串替换括号中所选择的元素。同时,一旦完成替换,被替换元素中的全部事件都将消失。

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            .red { background: red; }
            .green { background: green; }
        </style>
    </head>
    <body>
        <p>Hello World!</p>
        <p>Hello Tomorrow!</p>
        <input type="button" name="name" value="replaceWith" id="replaceWith" />
        <input type="button" name="name" value="replaceAll" id="replaceAll" />
    </body>
    <script src="scripts/jquery.min.js"></script>
    <script>
        $(function () {
            $("#replaceWith").click(function () {
                $("p").replaceWith("<div class='red'>123</div>");
            })
            $("#replaceAll").click(function () {
                $("<div class='green'>456</div>").replaceAll("p");
            })
        })
    </script>
    </html>

    6、包裹节点

    wrap(html):

    html参数为字符串代码,用于生成元素并包裹所选元素;

    把所有选择的元素用其他字符串代码包裹起来;

    wrap(elem):

    elem参数用包装所选元素的dom元素;

    把所有选择的元素用其他dom元素包裹起来;

    wrap(fn):

    fn参数为包裹结构的一个函数;

    把所有选择的元素用function函数返回的代码包裹起来;

    unwrap():

    无参数;

    移除所选元素的父元素或包裹标记;

    wrapAll(html):

    html参数为字符串代码,用于生成元素并包裹所选元素;

    把所有选择的元素用单个元素包裹起来;

    wrapAll(elem):

    elem参数用于包装所选元素的dom元素;

    把所有选择的元素用单个dom元素包裹起来;

    wrapInner(html):

    html参数为字符串代码,用于生成元素并包裹所选元素;

    把所有选择的元素的子内容(包括文本节点)用字符串代码包裹起来;

    wrapInner(elem):

    elem参数用于包裹所选元素的dom元素;

    把所有选择的元素的子内容(包括文本节点)用dom元素包裹起来;

    wrapInner(fn):

    fn参数为包裹结构的一个函数 ;

    把所有选择的元素的子内容(包括文本节点)用function函数返回的代码包裹起来;

    wrap(html)与wrapInner(html)方法较为常用,前者包裹外部元素,后者包裹元素内部的文本字符。

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            .red { background: red; }
            .green { background: green; }
        </style>
    </head>
    <body>
        <p>Hello World!</p>
        <p>Hello Tomorrow!</p>
        <input type="button" name="name" value="wrap" id="wrap" />
        <input type="button" name="name" value="unwrap" id="unwrap" />
        <input type="button" name="name" value="wrapAll" id="wrapAll" />
        <input type="button" name="name" value="wrapInner" id="wrapInner" />
    </body>
    <script src="scripts/jquery.min.js"></script>
    <script>
        $(function () {
            $("#wrap").click(function () {
                $("p").wrap("<div class='red'></div>");
            })
            $("#unwrap").click(function () {
                $("p").unwrap("<div></div>");
            })
            $("#wrapAll").click(function () {
                $("p").wrapAll("<div class='green'></div>");
            })
            $("#wrapInner").click(function () {
                $("p").wrapInner("<em></em>");
            })
        })
    </script>
    </html>

    7、遍历元素

    在jquery中,可以使用each()方法实现元素的遍历。

    其语法格式如下:

    each( callback )

    参数callback是一个function函数,该函数可以接受一个形参index,此形参为遍历元素的序号(从0开始);如果需要访问元素的属性,可以借助形参index,配合this关键字来实现元素属性的设置或获取。

    8、删除元素

    jquery提供了两种可以删除元素的方法:

    (1) remove()

    其语法格式如下:

    remove( [expr] )

    参数expr为可选项,如果接受参数,则该参数为筛选元素的jquery表达式,通过该表述式获取指定的元素,并进行删除。

    (2) empty()

    其语法格式如下:

    empty(),其功能为清空所选择的页面元素或所有的后代元素。

    严格来说,empty()方法并非真正意义上的删除,使用该方法,仅仅可以清空全部的节点或节点所包括的所有后代元素,并非删除节点和元素。

  • 相关阅读:
    IM设计思考:XMPP多用户文本聊天协议(MUC:Multi User Chat)
    软件设计中的“三视图”
    [C++] 应该如何应对OOM?
    Android 上Camera分析
    android的语言切换应用程序 根据 不同的语言 加载不同的 res
    布局
    布局
    如何解决"Launching New_configuration"问题
    android的语言切换应用程序 根据 不同的语言 加载不同的 res
    如何解决"Launching New_configuration"问题
  • 原文地址:https://www.cnblogs.com/pengjielee/p/jquery-dom.html
Copyright © 2011-2022 走看看