• jQuery中DOM操作


    1.DOM操作的分类

    DOM操作一般分为3个方面,即DOM Core、HTML-DOM和CSS-DOM。

    2.查找节点

    2.1查找元素节点

    获取元素节点并打印它的文本内容

        var $li = $("ul li:eq(1)");
        var li_next = $li.text();
        alert(li_next);
    

    2.2查找属性节点

    获取属性节点并打印它的文本内容

        var li_next = $("p").attr("title");
        alert(li_next);
    

    3. 创建节点

    3.1 创建元素节点

    jQuery的工厂函数$()

        var $li_1 = $("<li></li>");
        $("ul").append($li_1);
    

    3.2创建文本节点

        var $li_1 = $("<li>香蕉</li>");
        $("ul").append($li_1);
    

    3.3 创建属性节点

        var $li_1 = $("<li title = 'banana'>香蕉</li>");
        $("ul").append($li_1);
    

    4. 插入节点

    方法 描述
    append() 向每个匹配元素内部追加内容
    appendTo() 将所有匹配元素追加到指定的元素中。$("A").appendTo(B)将追加到B中,与append()相反
    prepend() 向每个匹配元素内部前置内容
    prependTo() 将所有匹配元素前置匹配元素内部,与prependTo()相反
    after() 在指定元素之后插入内容
    insertAfter() 将所有匹配元素插入到指定元素后,与after()相反
    befor() 在指定元素之前插入内容
    insertBefor() 在所有匹配内容之前插入指定元素

    5. 删除节点

    5.1 remove()

    当某个节点用remove()删除后,该节点的所有后代节点将同时删除,返回值是一个指向被删除的节点的引用,可以在以后再使用这些元素。

         var $li = $("ul li:eq(1)").remove();
         $("ul").append($li);
    

    5.2 detach()

    从DOM中删除所有匹配的元素,但是不会把匹配元素从jQuery对象中删除,可以在将来使用,但是与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。

        $("ul li").click(function(){
            alert($(this).html());
        })
        
         var $li = $("ul li:eq(1)").remove();//删除元素
         $("ul").append($li); //重新追加此元素,它之前绑定的事件还在,若使用remove(),它之前绑定的事件将会失效
    

    5.3 empty()

    empty()方法不是删除节点,而是清空节点,清空元素中所有后代节点。

         var $li = $("ul li:eq(1)").empty();//注意是元素里
    

    6 复制节点

        $(this).clone(true).appendTo(body);
    

    clone()中传递参数true,表示复制元素的同事复制元素中所绑定的事件。

    7 替换节点

    replaceWith()将所有匹配元素都替换成指定的Html或DOM元素。
    replaceALL()与replaceWith()作用相同,只是顺序颠倒。

        $("p").replaceWith("<strong>内容</strong>");
        $("<strong>内容</strong>").replaceAll("p");//二者效果相同
    

    注意:如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会与被替换元素一起消失。

    8 包裹节点

    wrap()将所有的元素进行单独的包裹
    wrapAll()将所有匹配的元素用一个元素包裹
    wrapInner()将每一个匹配的元素的子内容用其他结构化的标记包裹起来。

        $("strong").wrap("b");
        $("strong").wrapAll("b");
        $("strong").wrapInner("b");
    

    效果如下:

        <!--wrap()-->
        <b><strong>水果</strong></b> 
        <b><strong>香蕉</strong></b> 
        
        <!--wrapAll()-->
        <b>
          <strong>水果</strong> 
          <strong>香蕉</strong>
        </b> 
        
        <!--wrapInner()-->
        <strong><b>水果</b></strong>
    

    9 属性操作

    9.1 获取设置属性

    获取属性和设置属性都是用的同一函数,类似于gettersetter,包括html()、text()、val()、css()、height()等。

        $("strong").attr("title");//获取属性title
        $("strong").attr("title","St");//设置属性title为St
    

    9.2 删除属性

        $("strong").removeAttr("title");//删除属性title
    

    10 样式操作

    10.1 获取样式和设置样式

        $("p").attr("class");//获取元素p的class
        $("strong").removeAttr("title");//删除属性title
    

    10.2 追加样式

        $("strong").addClass("title");//删除属性title
    

    10.3移除样式

        $("p").removeClass();   //移除p中所有样式
        $("p").removeClass("high");//移除单个样式
        $("p").removeClass("high another");//移除多个样式,中间用空格隔开
    

    10.4切换样式

        $("p").toggle(function(){
             //显示元素  代码 1
        },function(){
            //显示元素  代码 2
        });   
    

    toggle()方法是指交替执行代码1和代码2,另外jQuery还提供了一个toggleClass()方法控制样式上的重复切换,如果类名存在则删除,类名不存在则添加。

        $("p").toggleClass("another"); // 重复切换类名 "another"
    

    10.5判断是否含有某个样式

       $("p").hasClass("another"); // 若含有类another则返回true,否则返回false
       $("p").is("another"); // 在jQuery内部实际调用的是,is()方法
    

    11.设置和获取HTML、文本和值

    11.1 html()方法

    类似于JavaScript中的innerHTML属性,用了获取或设置某个元素的HTML内容。可以用于xhtml文档,但是不能用于xml文档。

       $("p").html();         //获取p中的html代码
       $("p").html("<strong>水果</strong>"); //设置p中的html代码
    

    11.2 text()方法

    类似于JavaScript中的innerText属性,用了获取或设置某个元素中的文本内容。

       $("p").text();      //获取p中的文本元素
       $("p").text("水果"); //设置p中的文本元素
    

    11.3 val()方法

    类似于JavaScript中的value属性,用了获取或设置某个元素的值。如果元素为多选,则返回一个包含所有选择的值的数组。

       $("#login").val();      //获取p中的文本元素
       $("#login").val("admin"); //设置p中的文本元素
    

    12 遍历节点

    12.1 children()方法

    该方法用于取得匹配元素的子元素集合。

        var $body = $("body").children();
        alert($body.length); //输出body元素下的元素个数
    

    children()方法只考虑子元素而不考虑其他后代元素。

    12.2 next()方法

    用于取得匹配元素后面紧邻的同辈元素

        var $body = $("p").next(); //取得紧邻p后的同辈元素
    

    12.3 prev()方法

    用于取得匹配元素前面紧邻的同辈元素

        var $body = $("p").prev(); 
    

    12.4 siblings()方法

    用于取得匹配元素前后所有同辈元素

        var $body = $("p").siblings(); 
    

    12.5 closest()方法

    用于取得最近的匹配元素。首先检查当前元素是否匹配,如果匹配直接返回元素本身,若不匹配则向上查找父元素,逐级向上知道找到匹配选择器的元素,如果什么都没找到,则返回空的jQuery对象。

        $(document).bind("click",function(e){
            $(e.target).closest("li").css("color","red");
        })    
    
  • 相关阅读:
    [leetcode]7. Reverse Integer
    [leetcode] 6. ZigZag Conversion
    [leetcode] 5.Longest Palindromic Substring-2
    [leetcode] 5.Longest Palindromic Substring-1
    [leetcode]4. Median of Two Sorted Arrays
    [leetcode]3. Longest Substring Without Repeating Characters
    [leetcode]2. Add Two Numbers
    [chrome]download chrome offline installer package / 下载chrome离线安装包
    [powershell]powershell upgrade package
    [python]python cockbook
  • 原文地址:https://www.cnblogs.com/a8167270/p/5086798.html
Copyright © 2020-2023  润新知