美文网首页跨平台
jQuery篇之操作jQuery对象(DOM)

jQuery篇之操作jQuery对象(DOM)

作者: 平安喜乐698 | 来源:发表于2019-10-08 17:37 被阅读0次
    目录
        1. 
    

    举例(原生添加元素)

        <script type="text/javascript">
            var body = document.querySelector('body');
    
            document.addEventListener('click',function(){
                
                //创建2个div元素
                var rightdiv = document.createElement('div')
                var rightaaron = document.createElement("div");
    
                //给2个div设置不同的属性
                rightdiv.setAttribute('class', 'right')
                rightaaron.className = 'aaron'
                rightaaron.innerHTML = "动态创建DIV元素节点";
    
                //2个div合并成包含关系
                rightdiv.appendChild(rightaaron)
                
                //绘制到页面body
                body.appendChild(rightdiv)
    
            },false)
        </script>
    

    上述例子更换为jQuery写法

        <script type="text/javascript">
        var $body = $('body');
        $body.on('click', function() {
            //通过jQuery生成div元素节点
            var div = $("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")
            $body.append(div)
        })
        </script>
    
    原生添加元素的流程
        创建元素:document.createElement
        设置属性:setAttribute
        添加文本:innerHTML
        加入文档:appendChild
    
    原生添加元素的缺点
        每一个元素节点都必须单独创建
        节点是属性需要单独设置,而且设置的接口不是很统一
        添加到指定的元素位置不灵活
        最后还有一个最重要的:浏览器兼容问题处理
    

    创建 元素

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

    添加 元素

    追加至结尾(作为子元素)
        $("p").append("Some appended text.");
        $("<b>Hello World!</b>").appendTo("p");
    追加至开头(作为子元素)
        $("p").prepend("<p>hello</p>","<p>world</p>");
        $("<b>Hello World!</b>").prependTo("p");
    
    元素之后之前添加(作为兄弟元素)
        $("img").after("Some text after");
        $("img").after("Some text after","Some text after");
        $("img").before("Some text before");
        $("img").before("Some text before","Some text before"));
        $("<span>Hello world!</span>").insertAfter("p");
        $("<span>Hello world!</span>").insertBefore("p");
    

    删除 元素

    删除所有子孙元素
        $("#div1").empty();
    删除(自己和所有子孙元素,移除元素内部的一切---包括绑定的事件及与该元素相关的jQuery数据)
        $("#div1").remove();
    删除所有class为italic的p元素
        $("p").remove(".italic");
    删除所有包含3字符串的p元素
        $("p").filter(":contains('3')").remove()
        $("p").remove(":contains('3')")
    删除(自己和所有子孙元素,保留所有绑定的事件、附加的数据。当你append之后,又重新回到了文档流中。就又显示出来了)
        $("p").detach();
    删除p的所有父元素
        $("p").unwrap();
    
    为了防止"内存泄漏",所以一定要注意,绑了多少事件,不用的时候一定要记得销毁
    
    detach()举例
    
        <script type="text/javascript">
        $('p').click(function(e) {
            alert(e.target.innerHTML)
        })
        var p;
        $("#bt1").click(function() {
            if (!$("p").length) return; //去重
            //通过detach方法删除元素
            //只是页面不可见,但是这个节点还是保存在内存中
            //数据与事件都不会丢失
            p = $("div").detach()
        });
    
        $("#bt2").click(function() {
            //把p元素在添加到页面中
            //事件还是存在
            $("body").append(p);
        });
        </script>
    

    复制/替换 元素

    克隆元素以及子孙元素
        $("p").clone()    // 不包含:事件与数据
        $("div").clone(true) // 包含:事件与数据
    
    替换(会删除原节点及子孙节点,以及相关联的数据和事件)
        返回的是原节点
        $("<b>Hello world!</b>").replaceAll($("p"));
        $("p").replaceWith("<b>Hello world!</b>");
    
    包裹p元素(添加父元素)
        $("p").wrap("<div></div>");
        $('p').wrap(function() {
            return '<div></div>';   
        })
        $('p').wrapAll('<div></div>');  // 增加一个共同的父元素
        $('p').wrapAll(function() {    // 每一个p一个单独的父元素
            return '<div><div/>'; 
        })
    
    给p元素添加子元素(该元素包含了原来的所有子元素)
        $("p").wrapInner("<b></b>");
        $('p').wrapInner(function() {
            return '<b></b>'; 
        })
    
    解包裹p元素(删除父元素)
        $('p').unwrap('')
        $('p').unwrap(function() {
            return '<div></div>';
        })
    

    父辈、子孙、兄弟 元素

    parent(父元素)

    直接父元素(每一个元素的父元素)
        $("span").parent();
        $('span').parent(':last')  // 可传入选择器作为参数
    

    parents(父辈元素)

    所有父辈元素
        $("span").parents();
        $("span").parents("ul");  // 所有url父辈元素(可传入选择器作为参数)
    

    closet(自己或父辈元素)

    最先匹配的自己或父辈元素
        $("div").closet('li')
    
        $('span').offsetParent()
    直到div元素的所有父元素
        $("span").parentsUntil("div");
    
    注意:$( "html" ).parent()方法返回一个包含document的集合,而$( "html" ).parents()返回一个空集合。
    

    children(直接子元素)

    所有直接子元素(元素集合的每一个元素的直接子元素)
        可将选择器作为参数传入
        $("div").children();
    所有子元素类型为p且class为myClass的直接子元素
        $("div").children("p.myClass");
    取元素集合最后一个元素的直接子元素
        $('.div').children(':last')
    

    find(子孙元素,参数为必需)

    所有子孙元素
        $("div").find("*");
    所有span子元素
        $("div").find("span");
        $('div', 'span')  // 等价
    第三个
        $("body").find("div").eq(2);
    最后一个
        $("p").find("span").end()
    

    next(后面的相邻兄弟元素)

    后面的兄弟元素(每一个元素的后面相邻兄弟元素)
        $("h2").next();
        $("h2").next(':first');    // 可传入选择器作为参数
    
    所有后面的兄弟元素
        $("h2").nextAll();
    所有后面的直到h6的兄弟元素
        $("h2").nextUntil("h6");
    

    prev(前面的相邻兄弟元素)

    前面的相邻兄弟元素
        $("h2").prev();
        $("h2").prev(':first');     // 可传入选择器作为参数
    
    
    前面的所有兄弟元素
        $("h2").prevAll();
    所有前边直到h6(不含)的兄弟元素
        $("h2").prevUntil("h6");
    id为p的元素一直往上到id为hh(不含)所有dd元素
        $("#p").prevUntil(document.getElementById('hh'), "dd")
    

    siblings(所有兄弟元素)

    所有兄弟元素
        $("h2").siblings();
        $("h2").siblings("p");    
    

    相关文章

      网友评论

        本文标题:jQuery篇之操作jQuery对象(DOM)

        本文链接:https://www.haomeiwen.com/subject/lizspctx.html